打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
springmvc ztree 实现权限菜单的展示

http://blog.csdn.net/zwx19921215/article/details/44339919

前台js


[javascript] view plain copy
  1. //打开菜单窗口  
  2. function openMenuDialog(){  
  3.     var selected = $("#list").datagrid('getSelected');  
  4.     if (selected != null) {  
  5.         $("#id").val(selected.id);  
  6.         queryMenus(selected.id);  
  7.         $("#menuWindow").window("open");  
  8.     } else {  
  9.      $.messager.alert('提示', "未选择数据!");   
  10.     }  
  11. }  
  12. //角色-菜单信息入库  
  13. function ajaxSubmit(rid,idstr){  
  14.     $.post("${ctx}/roleMenu/save.jhtml",{"roleId":rid,"ids":idstr},function(obj){  
  15.         $.messager.alert('提示',obj.msg);  
  16.         $("#menuWindow").window('close');  
  17.     },'json');  
  18. }  


[javascript] view plain copy
  1. <!-- ztree -->  
  2. <script type="text/javascript">  
  3. var tree = "";  
  4. var setting = {  
  5.     check : {  
  6.         chkboxType:{"Y":"ps","N":"ps"},//勾选checkbox对于父子节点的关联关系  
  7.         chkStyle:"checkbox",  
  8.         enable : true   //是否复选框  
  9.     },  
  10.     //数据  
  11.     data : {  
  12.         simpleData : {  
  13.             enable : true  
  14.         }  
  15.     }  
  16. };  
  17. //查询菜单信息  
  18. function queryMenus(roleId){  
  19.     $.post('${ctx}/role/treedata.jhtml', {'roleId':roleId}, function(zNodes) {  
  20.         for (var i = 0; i < zNodes.length; i++) {  
  21.             if (zNodes[i].isParent) {  
  22.   
  23.             } else {  
  24.                 //zNodes[i].icon = "${ctxStatic}/images/532.ico";//设置图标  
  25.             }  
  26.         }  
  27.         tree = $.fn.zTree.init($("#tree"), setting, zNodes);  
  28.         tree.expandAll(true);//全部展开  
  29.         //var nodes = treeObj.getNodes();  
  30.     }, 'json');  
  31. }  
  32. //获取选中节点  
  33. function onCheck(){  
  34.      var rid = $("#id").val();  
  35.      var treeObj=$.fn.zTree.getZTreeObj("tree");  
  36.      var nodes=treeObj.getCheckedNodes(true);  
  37.      var ids = new Array();  
  38.      for(var i=0;i<nodes.length;i++){  
  39.         //获取选中节点的值  
  40.          ids.push(nodes[i].id);  
  41.         // v+=nodes[i].id + ",";  
  42.         //alert(nodes[i].id);   
  43.      }  
  44.     ajaxSubmit(rid,ids);       
  45. }  
  46. </script>  


后台:action


  1. @RequestMapping(value = "/treedata.jhtml")  
  2.     @ResponseBody  
  3.     public String treedata(HttpServletRequest request, Model model) {  
  4.         DynamicParams params = new DynamicParams(request);  
  5.         List<Map<String, Object>> mapList = Lists.newArrayList();  
  6.           
  7.         params.put("allMenu", "allMenu");  
  8.         List<Menu> list = menuManager.findMenuList(params);  
  9.           
  10.         List<RoleMenu> roleMenus = roleMenuManager.findList(params);  
  11.           
  12.         for(int i=0;i<list.size();i++){  
  13.             Menu e = list.get(i);  
  14.             Map<String, Object> map = Maps.newHashMap();  
  15.             map.put("id", e.getId());  
  16.             map.put("pId", e.getParentId()!=null?e.getParentId():0);  
  17.             map.put("name", e.getName());  
  18.             for(RoleMenu roleMenu:roleMenus){  
  19.                 if(roleMenu.getMenuId()==e.getId()){  
  20.                     map.put("checked", true);  
  21.                 }  
  22.             }  
  23.             mapList.add(map);  
  24.         }  
  25.         return toJson(mapList);  
  26.     }  

service

  1. public List<Menu> findMenuList(DynamicParams params) {  
  2.         List<Menu> menus = new ArrayList<Menu>();  
  3.   
  4.         if ("allMenu".equals(params.getString("allMenu"))) {  
  5.             menus = menuDao.findList(params);  
  6.         } else {  
  7.             // 通过用户查询角色  
  8.             List<UserRole> userRoles = userRoleDao.findList(params);  
  9.             // 通过角色查询菜单  
  10.             List<RoleMenu> roleMenus = new ArrayList<RoleMenu>();  
  11.             if (userRoles != null && userRoles.size() > 0) {  
  12.                 for (UserRole userRole : userRoles) {  
  13.                     params = new DynamicParams();  
  14.                     if (userRole != null) {  
  15.                         if (userRole.getRoleId().equals(params.getString("rid"))) {  
  16.                             break;  
  17.                         }  
  18.                         params.put("roleId", userRole.getRoleId().toString());  
  19.                         List<RoleMenu> rms = roleMenuDao.findList(params);  
  20.                         for (RoleMenu roleMenu : rms) {  
  21.                             roleMenus.add(roleMenu);  
  22.                         }  
  23.                     }  
  24.                 }  
  25.             }  
  26.   
  27.             // 查询菜单信息  
  28.             for (RoleMenu roleMenu : roleMenus) {  
  29.                 if (roleMenu != null) {  
  30.                     Menu menu = menuDao.find(roleMenu.getMenuId());  
  31.                     if(menu!=null){  
  32.                         menus.add(menu);  
  33.                     }  
  34.                 }  
  35.             }  
  36.             menus = removeDuplicate(menus);  
  37.             Collections.sort(menus);  
  38.         }  
  39.         return menus;  
  40.     }  
  41.   
  42.     /** 
  43.      * 去除菜单中重复项 
  44.      *  
  45.      * @param list 
  46.      * @return 
  47.      */  
  48.     private List<Menu> removeDuplicate(List<Menu> list) {  
  49.         List<Menu> result = new ArrayList<Menu>();  
  50.         Set<Long> menuIds = new HashSet<Long>();  
  51.         for (int i = 0; i < list.size(); i++) {  
  52.             Menu m = list.get(i);  
  53.             if (m != null && menuIds.add(m.getId())) {  
  54.                 result.add(m);  
  55.             }  
  56.         }  
  57.         return result;  
  58.     }  




本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
系统权限设计(五张表)
C#生成无限级别菜单
Android实现下拉导航选择菜单效果 类于于桌面图标形式
微信开发总结 三
javascript+xml实现二级下拉菜单,不会被任何标签或元素遮住
基于 Ajax 的无限级菜单
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服