使用Ztree新增角色和编辑角色回显


 最近在项目中使用到了ztree,在回显时候费了点时间,特记录下来供下次参考。

1、新增角色使用ztree加载权限,由于权限不多,所以使用直接全部加载。

效果图:

具体涉及ztree代码:

jsp中导入:/js/ztree/zTreeStyle.css和js/ztree/jquery.ztree.all-3.5.js

页面加入

    js代码(此js中加入了layer弹框效果):

    
    

    权限中Ztree格式: 

         private String id;
    
        private String name;
    
        private String code;
    
        private String description;
    
       // private String page;
    
       //private String generatemenu;
    
       //private String zindex;
    
        private String pid;
        
        private boolean isParent;
    
         //ztree组件需要格式
        public String getpId() {
            return this.pid==null?"0":this.pid;
        }
    
        ......
    

    2、编辑角色回显Ztree

    js代码:

    
    

    java后台:

    controller:

    /**
    	 * 编辑角色,回显角色权限
    	 * @param roleId
    	 * @return
    	 */
    	@RequestMapping(value = "queryFunByRoleId", method = RequestMethod.POST)
    	public ResponseEntity>> queryFunByRoleId(String roleId) {
    		try {
    			if(StringUtils.isBlank(roleId)){
    				// 返回400
    				return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
    			}
    			return ResponseEntity.ok(sysService.queryFunByRoleId(roleId));
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		// 出错 500
    		return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    	}
    

    service:

    由于List中的contains方法校验老是失败,也没纠结什么原因,自己写的根据id校验

    /**
         * zTree v3回显
         * 初始化化权限树
         * 拼接treeNode属性
         */
        @Transactional(readOnly=true)
        public List> queryFunByRoleId(String roleId) {
            //查询所有权限
            List functions = queryAllAuthFunction();
            //查询指定角色的权限
            List functionsByRoleId = findFunctionByRoleId(roleId);
            //包装zTree
            
            List> list =new ArrayList>();
            Mapmap=null;
            for(int i=0;i();
                //Role role=functions.get(i);
                AuthFunction fun = functions.get(i);
                map.put("id", fun.getId());
                map.put("pId", fun.getpId());
                map.put("name", fun.getName());
                map.put("isParent", fun.getIsParent());
                //判断指定用户的角色是否在所有角色中包含,有则设置checked=true.
                if(functionsByRoleId != null && functionsByRoleId.size()>0 && ListIsContainsObj(functionsByRoleId,fun)){
                    map.put("checked",true);
                }else {
                    map.put("checked",false);
                }
                list.add(map);
            }
            return list;
        }
        
        //校验全部权限中是否有某个权限,有返回true
    	private boolean ListIsContainsObj(List functions, AuthFunction fun) {
    		if(fun == null || functions == null || functions.size()<=0){
    			return false;
    		}
    		for (AuthFunction authFunction : functions) {
    			if(fun.getId().equals(authFunction.getId())){
    				return true;
    			}
    		}
    		return false;
    	}