一、有一张权限表(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之间的关系。