请教struts2对map的迭代

li_hy2002 2009-02-13 10:47:53
action中传到页面中一个map<A,List<B>>
A,B为bean,A属性有aa,ab;B属性有ba,bb
需要显示A,B的所有属性
如:aa1(ab1)
ba1(bb1)
ba2(bb2)
aa2(ab2)
aa3(ab3)
这种格式

请问该如何写

自己写了个但是取不出数据

<s:iterator id="a" value="#Map.keySet()">
<s:set name="father" value="#a" scope="request"/>
<s:property value="#father.aa"/>(<s:property value="#father.ab"/>)
<s:iterator value="#menuMap.get(#a)" id="child">
<s:property value="#child.ba"/>(<s:property value="#child.bb"/>())
</s:iterator>
</s:iterator>

...全文
309 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearKin 2009-02-13
我也没实验过用MAP 不过 你试试用s:append 我想可以办到的
回复
BearKin 2009-02-13
<s:iterator value="map.keySet()" id="bookId"> 
<tr>
<td>
<s:property value="map.get(#bookId)"/>
</td>
</tr>
</s:iterator>


回复
BearKin 2009-02-13
应该都一样吧?
回复
li_hy2002 2009-02-13
回楼上,你写的是对list的迭代吧,我需要的是对map的迭代,不过还是谢谢你啊
回复
BearKin 2009-02-13
我的Action里有:



public List<TestViewObject> getList() {
return list;
}




JSP页面通过这个方法获得list属性 页面迭代的时候
 
<s:property value="userOne" />
<s:property value="userTwo" />


他会自动寻找迭代对象里的属性


private String userOne;
private String userTwo;





大家都是刚学STRUTS2 互相帮助 ~~
回复
BearKin 2009-02-13
我的Action里有:



public List<TestViewObject> getList() {
return list;
}




JSP页面通过这个方法获得list属性 页面迭代的时候
 
<s:property value="userOne" />
<s:property value="userTwo" />


他会自动寻找迭代对象里的属性


private String userOne;
private String userTwo;





大家都是刚学STRUTS2 互相帮助 ~~
回复
BearKin 2009-02-13
迭带的方式都一样不过你写的好象不太对劲啊。。。
我写了个例子 你看看吧

TestViewObject.java



public class TestViewObject {
private String userOne;
private String userTwo;
private String userThree;

public String getUserOne() {
return userOne;
}

public void setUserOne(String userOne) {
this.userOne = userOne;
}

public String getUserTwo() {
return userTwo;
}

public void setUserTwo(String userTwo) {
this.userTwo = userTwo;
}

public String getUserThree() {
return userThree;
}

public void setUserThree(String userThree) {
this.userThree = userThree;
}
}



TestAction.java


import java.util.ArrayList;
import java.util.List;

import struts.vo.TestViewObject;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private TestViewObject vo;
List<TestViewObject> list;

public TestViewObject getVo() {
return vo;
}

public void setVo(TestViewObject vo) {
this.vo = vo;
}

public List<TestViewObject> getList() {
return list;
}

public String execute() throws Exception {
TestViewObject vo;
list = new ArrayList<TestViewObject>();
for (int i = 0; i < 3; i++) {
vo = new TestViewObject();
vo.setUserOne(i + " gaga");
vo.setUserTwo(i + " dudu");
vo.setUserThree(i + " haha");
list.add(vo);
}
return "success";
}
}


struts.xml

<?xml version="1.0" encoding="GBK" ?>
<!--指定struts2配置文件的DTD信息-->
<!DOCTYPE struts PUBLIC
"-//apache Software Foundation//DTD Struts Configuation 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts 是struts2配置文件的根元素-->
<struts>
<include file="struts-default.xml"></include>
<!--struts2的Action必须放在指定的包空间下定义-->
<package name="test" extends="struts-default">
<action name="testAction" class="TestAction">
<result>/success.jsp</result>
</action>
</package>
</struts>


success.jsp


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<s:iterator value="list">
<s:property value="userOne" />
<s:property value="userTwo" />
</s:iterator>
</body>
</html>

回复
BearKin 2009-02-13
哈哈哈。。
回复
li_hy2002 2009-02-13
找到问题了,我数据放在session里的,用#map取不到,真晕,我那写法是可以的
回复
li_hy2002 2009-02-13
主要是map的key是个bean,如果是string或者int的话就好办了
回复
发动态
发帖子
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
社区公告
暂无公告