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     }

 

posted on 2017-10-24 23:25  Sharpest  阅读(982)  评论(0编辑  收藏  举报