s:iterator 迭代 按动态名取List>

沧半闲 2012-04-27 11:22:14
有一个listMap需要页面迭代
List<Map<String,object>> listMap = new ArrayList<Map<String,Object>> ();

每次迭代的map如下
Map<String,Object> map =new HashMap<String,Object>();
map.put("column1", "value1");map.put("column3", "value3");map.put("column2", "value2");...

要求按column的序号输出
若map只存3个 页面可写如下

<s:iterator value="listMap" status="infoList" id="listMapid">
<tr>
<td ><s:property value="column1"/></td>
<td ><s:property value="column2"/></td>
<td ><s:property value="column3"/></td>
</tr>
</s:iterator>


若map的数量不固定 如何按顺序取
...全文
869 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuqian_1991 2014-08-13
  • 打赏
  • 举报
回复
这个也不知能不能实现你说的那个
wuqian_1991 2014-08-13
  • 打赏
  • 举报
回复
//迭代循环 @SuppressWarnings("unused") private void addElement(Object obj , Element parnetElement) { // TODO Auto-generated method stub List<Map<String,Object>> list = (List<Map<String,Object>>)obj; for(Map<String,Object> map : list){ for(String key : map.keySet()){ Object value = map.get(key); System.out.println("key:"+key); System.out.println("value:"+value); if(value instanceof String){ Element childElement = parnetElement.addElement(key); childElement.setText((String)value); System.out.println(parnetElement.toString()); }else if (value instanceof List){ addElement(list,parnetElement); } } } }
zhangzhiqiang33 2012-04-28
  • 打赏
  • 举报
回复
3L的很想试试..
我认为还是用那个<s:if/>标签进行页面的逻辑处理,我在做页面的分页的时候经常用这个
沧半闲 2012-04-28
  • 打赏
  • 举报
回复
思路:
迭代a:
第一个list 迭代b :
在其内再次循环该list迭代c
当迭代c中map.key 截取掉column剩余数字 等于 迭代b当前列数时 输出其value
绝世酱油瓶 2012-04-28
  • 打赏
  • 举报
回复

<c:forEach var="bm" items="${data}">
<c:forEach var="b" items="${bm.map}">
${b.key}
${b.value}
</c:forEach>
</c:forEach>
JSTL标签可以这样直接拿到key、value、
struts的没试过。
沧半闲 2012-04-28
  • 打赏
  • 举报
回复
自己解决了... 上代码 散分 -0-

<s:iterator value="listMap" status="infoList" var="listMapvar">
<tr>
<s:iterator value="#listMapvar" status="infoMeaning" >
<td align="center" bgcolor="#FFFFFF" width="110" style="word-wrap:break-word;word-break:break-all;">
<s:iterator value="#listMapvar" var="listMapid" >
<s:if test='%{#listMapid.key.substring(6)==#infoMeaning.count}' ><s:property value="#listMapid.value"/></s:if>
</s:iterator>
</td>
</s:iterator>
</tr>
</s:iterator>
tom_66 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

<td ><s:property value="listMapid.key"/></td>肯定是可以的。。。
[/Quote]
思路应该是对的
<s:iterator value="listMap" status="infoList" id="listMapid">
<s:iterator value="listMap" status="#listMapid.keyValue()" id="value">
<tr>
<td ><s:property value="#value"/></td>
</tr>
</s:iterator>
</s:iterator>

我的思路是这样的,没测试过,不知道行不行
kouyiSC 2012-04-27
  • 打赏
  • 举报
回复
<td ><s:property value="listMapid.key"/></td>肯定是可以的。。。
jiang91200 2012-04-27
  • 打赏
  • 举报
回复
若map的数量不固定

可以将map里的数据取出,放在list中,然后在页面遍历这个list,就不需要按key取值了
wangjin9805 2012-04-27
  • 打赏
  • 举报
回复
页面上可以用<s:if test=""/> 处理逻辑的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧