后台代码如下:/**
 * 处理登陆,如果成功,则返回带权限的角色
 */
public SysEmp getEmpByRole(String loginId, String loginPwd) { SysEmp emp = getEmpById(loginId);
if (emp != null && loginPwd.equals(emp.getEmpPwd())) {
emp.setSysRole(roleDao.getRoleWithRightById(emp.getSysRole()
.getRoleId()));
} // 得到所有属于他的权限
Set<SysRight> rights = emp.getSysRole().getSysRights(); Set<Map> rightList = putItemInMenu(rights);
// 重新初始化权限
emp.getSysRole().setSysRights(rightList);
System.out.println(emp.getSysRole().getSysRights().size());
Hibernate.initialize(emp.getSysRole().getSysRights());
return emp;
}public Set<Map> putItemInMenu(Set<SysRight> setRights) { Set<Map> rootMenu = new HashSet<Map>(); for (Iterator item = setRights.iterator(); item.hasNext();) {
SysRight rightItem = (SysRight) item.next();
// 如果是父节点
if (rightItem.getRightType().equals("Folder")) {
Map mapMenu = new HashMap<String, Map<String, List<SysRight>>>();
List list = new ArrayList<SysRight>();
list.add(rightItem); for (Iterator right = setRights.iterator(); right.hasNext();) {
SysRight r = (SysRight) right.next();
if (r.getRightType().equals("Document")
&& r.getRightParentCode().equals(
rightItem.getRightCode())) {
list.add(r);
}
}
// 把循环的子节点以键值对的方式存入Map中
mapMenu.put(rightItem.getRightCode(), list);
// 添加到根节点
rootMenu.add(mapMenu);
} } return rootMenu; }
------------------------------
然后前台我怎么把Map里的值取出来(即角色的所有权限)但下面这样写不行<c:forEach items="${sessionScope.USER.sysRole.sysRights}" var="item">
父及菜单|${item.values}|<br>
<c:forEach items="${item.values}" var="list">
ok<br>
</c:forEach>
</c:forEach>输出的结果如下
只能输出 
   父级菜单 ||