Struts2 iterator标签实现嵌套循环



Struts2 iterator标签实现嵌套循环

问题:有一个List<List<Object>> list用struts2在页面显示
使用<s:iterator value=”list” var=”list1″>
<s:iterator value=”#list1″ var=”list2″>
<s:property value=”#list2.getName()” />
</s:iterator>
</s:iterator>
标签中的var相当于定义一个变量,而不需要知道里面存的对象叫什么名字,直接引用就可以。

<s:iterator value=”#request.aaList” status=”st1″>
<tr>
<s:iterator value=”#request.fieldMap” status=”st2″>
<td>
<s:property value=”<s:property value=’key’/>”/>
</td>
</s:iterator>
</tr>
</s:iterator>

上面的意思就是st2的循环显示key值,是作为st1循环中的value值的,但这样写不对,那这种情况,应该如何解决呢?

问题补充:这么说吧,我要的结果是这样的:
<s:iterator value=”#request.aaList” status=”st1″>
<tr>
<td>
<s:property value=”aaNo” />
</td>
<td>
<s:property value=”aaName” />
</td>

<tr/>
</s:iterator>
那个fieldMap是个Map类型的,他的key就是aaNo、aaName这些字段,所以循环输入这些字段。
<s:property value=”<s:property value=’key’/>”/> ,
<s:property value=’key’/>的值就是aaNo、aaName等,不知听明白没有。。。
问题补充:
qinglangee 写道
你是不是想循环aaList,每个值作为key去fieldMap取值在td中显示?
如果是的话
Html代码 收藏代码
<s:iterator value=”#request.aaList” var=”key1″>
<tr>
<td>
<s:property value=”#request.fieldMap[#key1]“/>
</td>
</tr>
</s:iterator>

谢谢你的回答,请看一下我的问题补充,貌似不是你这个意思。。。
问题补充:
qinglangee 写道
要不就是循环map,跟list没毛关系
Html代码 收藏代码
<s:iterator value=”#request.map” var=”entry”>
<tr>
<td>
<s:property value=”#entry.key”/>
</td>
<td>
<s:property value=”#entry.value”/>
</td>
</tr>
</s:iterator>

可能我说的还是不清楚。。。麻烦再看一下,
以前项目时这样写的,固定写好的,字段顺序(aaNo、aaName等)不可以改变
<s:iterator value=”#request.aaList”>
<tr>
<td>
<s:property value=”aaNo” />
</td>
<td>
<s:property value=”aaName” />
</td>
<td>
<s:property value=”model” />
</td>
<td>
<s:property value=”spec” />
</td>
</tr>
</s:iterator>
我现在把他做成动态可修改的了,aaList中存放是一个对象类型,aaNo等是这个对象的属性,现在我的想法是,要循环输出这段代码:
<td>
<s:property value=”aaNo(字段名称)” />
</td>
所以做成这样:
<s:iterator value=”#request.aaList”>
<tr>
<s:iterator value=”#request.fieldMap”>
<!–key处存放的就是aaNo等这些字段名称,我只需要这个map中的key–>
<td>
<s:property value=”<s:property value=’key’/>”/>
<!–<s:property value=’key’/>的值就是aaNo、aaName等–>
</td>
</s:iterator>
</tr>
</s:iterator>
但现在问题是:<s:property value=”<s:property value=’key’/>”/>
这样写是不对的,有没有其他的写法
问题补充:
qinglangee 写道
你这需求还真奇怪,那干嘛还用个map
Html代码 收藏代码
<s:iterator value=”#request.list” var=”obj”>
<tr>
<s:iterator value=”#request.map.keySet()” var=”key1″>
<td>
<s:property value=”#obj[#key1]“/>
</td>
</s:iterator>
</tr>
</s:iterator>

OK,就是这样写,太感谢了!我还得多努力啊。。。谢谢了
Struts
2010年7月28日 17:13 xumos xumos
2
0 0 1

Comment添加评论关注(0)
6个答案 按时间排序 按投票排序


0
0
采纳的答案
你这需求还真奇怪,那干嘛还用个map

Html代码 收藏代码
<s:iterator value=”#request.list” var=”obj”>
<tr>
<s:iterator value=”#request.map.keySet()” var=”key1″>
<td>
<s:property value=”#obj[#key1]“/>
</td>
</s:iterator>
</tr>
</s:iterator>
2010年7月29日 11:47qinglangee qinglangee
1105
0 0 0
Comment添加评论
0
0
很好,寻找很久 终于找到这个答案

2012年7月04日 14:55active_yufeng active_yufeng
30
0 0 0
Comment添加评论
0
0
要下班了

2010年7月29日 17:25qinglangee qinglangee
1105
0 0 0
Comment添加评论
0
0
要不就是循环map,跟list没毛关系

Html代码 收藏代码
<s:iterator value=”#request.map” var=”entry”>
<tr>
<td>
<s:property value=”#entry.key”/>
</td>
<td>
<s:property value=”#entry.value”/>
</td>
</tr>
</s:iterator>
2010年7月29日 10:25qinglangee qinglangee
1105
0 0 0
Comment添加评论
0
0
你的list里面放的是map,每个map里只有一个<key,value>对是吧?

Html代码 收藏代码
<s:iterator value=”#request.list” var=”map”>
<tr>
<s:iterator value=”#map” var=”entry”>
<td>
<s:property value=”#entry.key”/>
</td>
<td>
<s:property value=”#entry.value”/>
</td>
</s:iterator>
</tr>
</s:iterator>
2010年7月29日 10:22qinglangee qinglangee
1105
0 0 0
Comment添加评论
0
0
你是不是想循环aaList,每个值作为key去fieldMap取值在td中显示?
如果是的话

Html代码 收藏代码
<s:iterator value=”#request.aaList” var=”key1″>
<tr>
<td>
<s:property value=”#request.fieldMap[#key1]“/>
</td>
</tr>
</s:iterator>

 

http://www.iteye.com/problems/46968