1.
2.
1 <%@ page language="java" contentType="text/html; charset=UTF-8"%> 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 3 <html> 4 <head> 5 <base href="${pageContext.request.scheme}://${pageContext.request.serverName }:${pageContext.request.serverPort }${pageContext.request.contextPath }/"> 6 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 7 <link href="css/style.css" rel="stylesheet" type="text/css"> 8 <link rel="stylesheet" href="jquery/treeview/jquery.treeview.css" /> 9 <script src="jquery/jquery-1.7.2.min.js" type="text/javascript"></script> 10 <script src="jquery/treeview/jquery.treeview.js" type="text/javascript"></script> 11 12 <script type="text/javascript"> 13 $(function(){ 14 //$("#browser").treeview(); 15 //发送ajax请求,从服务器获取HTML字符串,插入到DOM元素中 16 /* 方式1 17 $.get("${pageContext.request.contextPath}/permission/makeMenuTree.action", 18 {"_":new Date().getTime(),"userId":"${session_user.id}"},function(data){ 19 $("#browser").append(data).treeview(); 20 }); */ 21 //方式2 22 $("#browser").load("${pageContext.request.contextPath}/permission/makeMenuTree.action", 23 {"_":new Date().getTime(),"userId":"${session_user.id}"},function(){ 24 $("#browser").treeview(); 25 }); 26 27 }); 28 </script> 29 <style type="text/css"> 30 a{ 31 text-decoration: none; 32 } 33 </style> 34 </head> 35 <body> 36 <ul id="browser" class="filetree"> 37 </ul> 38 </body> 39 </html>
2.
1 @Action("makeMenuTree") 2 public String makeMenuTree()throws Exception{ 3 return htmlOut(permissionService.getMenuTree(userId)); 4 }
3.
1 @Override 2 public String getMenuTree(String userId) { 3 //获取当前用户拥有的所有许可id 4 Set<String> allPermissionIds = new HashSet<String>(); 5 List<UserRoleRelation> userRoleRelations = userRoleRelationDao.getByUserId(userId); 6 for (UserRoleRelation userRoleRelation : userRoleRelations) { 7 //根据角色id获取该角色拥有的所有许可 8 Set<String> permissionIds = getPermissionIdsByRoleId(userRoleRelation.getRole().getId()); 9 allPermissionIds.addAll(permissionIds); 10 } 11 12 StringBuilder htmlString = new StringBuilder(); 13 Permission root = permissionDao.getRoot(); 14 getMenuTree(root,htmlString,allPermissionIds); 15 return htmlString.toString(); 16 } 17 18 private void getMenuTree(Permission permission, StringBuilder htmlString, Set<String> allPermissionIds) { 19 Set<Permission> childNodes = permission.getChildNodes(); 20 //该用户有这个许可 ,该节点不能是叶子节点 21 if(allPermissionIds.contains(permission.getId())&&childNodes.size()>0){ 22 if(permission.getParent()==null){ 23 htmlString.append("<li class='opened'>"); 24 }else{ 25 htmlString.append("<li class='closed'>"); 26 } 27 28 if(permission.getModuleUrl()!=null){ 29 htmlString.append("<span class='file'><a href='"+permission.getModuleUrl()+"' target='I2'>"+permission.getName()+"</a></span>"); 30 }else{ 31 htmlString.append("<span class='folder'>"+permission.getName()+"</span>"); 32 htmlString.append("<ul>"); 33 for (Permission childNode : childNodes) { 34 getMenuTree(childNode,htmlString,allPermissionIds); 35 } 36 htmlString.append("</ul>"); 37 } 38 39 htmlString.append("</li>"); 40 41 } 42 43 44 private Set<String> getPermissionIdsByRoleId(String roleId) { 45 //获取当前角色拥有的所有许可id 46 Set<String> permissionIds = new HashSet<String>();//存放当前角色拥有的所有许可 47 List <RolePermissionRelation> rolePermissionRelations = rolePermissionRelationDao.getByRoleId(roleId); 48 for (RolePermissionRelation rolePermissionRelation : rolePermissionRelations) { 49 permissionIds.add(rolePermissionRelation.getPermisson().getId()); 50 } 51 return permissionIds; 52 }