遍历集合

一、有一张权限表(Right),有一张角色表(Role),一张角色所拥有的权限表(Role_Right)
二、查询出所有的权限(rightList),查询出角色所拥有的权限(roleRightList)
三、在JSP页面进行遍历,(使用复选框)显示出所有的权限,如果角色所拥有的权限和所有权限的中的一个一致就打勾所,有权限的数量不能改变

就解答,谢谢!!

[code="java"]public class Right{
prirvate int id;
private int name;

get..
set..

}[/code]
[code="java"]public class RightVO extends Right{
private boolean flag;

get..
set..

}[/code]

[code="java"]public class RoleRight(){
private int roleId;
private int rightId;

get..
set..

}[/code]

从DB取出所有Right包装RightVO设置 flag 为false
[code="java"]
List rvoList = DB.getAllRightVo();

//角色权限列表
List rrList = DB..;

for(RightVO rv:rvoList ){

for(RoleRight rr:rrList ){
  if(rr.rightId==rv.id){
       rv.flag = true;
    }

}
}
}[/code]

rvoList 中包含角色权限的为flag 为 true

rvoList 设置到 request scope

jsp:

[code="jsp"]

/c:forEach[/code]

要是用到了struts 会更加简单

既然有二个集合,一个当前用户所拥有的权限(roleRightList),一个总的权限(rightList).
那么你在JSP页面输出checkbox的时候,就判断当前这个权限是否在roleRightList中,如果在就让它选中就行了.

实在不明白这个需求有什么难实现的,朋友,不过就是多关联了几个表,静下心来想想!!

提示你一下:
第一步:整个权限列表封装到一个map
第二步:将该用户所拥有的权限封装到一个map
第三步,将前两步的map对象传到前台.遍历第一步得到的map,如在key在第二步得到的map存在就选中.

不知道是否满足你的要求

不知道你的OR Mapping是怎么建立的。通常这样的OR Mapping反映到java中就是类似于role.getRightCollection():List
以及普通查询: getAllRights(): List
然后ListUtils.intersection()取交集。return回来的list.size() 不为0就满足你的要求。

我使用的是Toplink。通常这样的关系是不需要手动去建立的。只要数据库中的Constraints建立正确,这样的关系也就自然反应到了Object之间的关系。