日期:2014-05-17  浏览次数:20778 次

怎样遍历list集合的问题?
user 与role 是多对多关联  user 有set<role> roles = new HashSet<role>()这个属性
当查询并展现用户信息时,要显示用户所拥有的roles 集合;代码如下:
Action中:
List<User> userList = userDao.findAll();
ActionContext.getContext().put("userList",userList);

jsp页面

<s:itroater   value="#userList" var ="user">
${user.userName}
......这里怎样遍历roles中的值呢???才能显示role这个对象中的roleName值,这里有多个值....
</s:itroater>
web

------解决方案--------------------
user里有 role 的话 一样的循环 。

------解决方案--------------------
就跟你在后台写双循环N循环一样的方式
第二个循环value=user.roles
不过没用过你这种标签,平时都用的<c:forEach>
------解决方案--------------------
LZ的意思是多个${user.userName}值连起来一起显示?
------解决方案--------------------
引用:
LZ的意思是多个${user.userName}值连起来一起显示?

如果是这样你可以在后台处理好了,在拿到前台,也可以写个自定义EL表达式方法。
------解决方案--------------------
嵌套循环会有性能问题出现,N的平方次查询
------解决方案--------------------
都是一样的迭代好了。
------解决方案--------------------
引用:
Quote: 引用:

就跟你在后台写双循环N循环一样的方式
第二个循环value=user.roles
不过没用过你这种标签,平时都用的<c:forEach>


这是sutrus的迭代标签作用和forEach一样,用forEach怎么遍历roles里的值呢 。。。它是一个set结合,如果是对象的话直接遍历属性就行了

set一样像list那样遍历就行啦 
<c:forEach items="${userList}" var="user">
    <c:forEach items="${user.roles}" var="item">
        ${item.columnName}
    </c:forEach>
</c:forEach>
    
------解决方案--------------------
噢~set<String>,是这种玩意么??
<c:forEach items="${user.roles}" var="item">
     ${item}
</c:forEach>
直接取值就行了