java后台构造easyui的tree数据的一种方法

        最近在用easyui做一个权限管理系统,需要用到tree,后台构造json数据的时候总是不能很好的适应各种

情况,于是上网看了很多的例子,有几个能用,效率也比自己写的高,然后再加上自己的的业务需求改写了

一部分,就变成下面的代码了

	public List getResource(Connection conn, StringBuffer sql,String id,String type){
		try {
			//查出所有的权限集合
			List menuList = (List)this.find(conn, sql.toString(), Menu.class);
			//查出id对应的权限的id集合
			List menuList2 = (List)this.getKeys(conn, "select id from resource a,resource_role b,user_role c where c.userid = '" + id + "' and b.roleid = c.roleid and a.id = b.resourceid", Menu.class);
			Map map = new HashMap();
			List list = new ArrayList();
			
			//把所对应每个权限的放到map中,索引为自身的id
			for(Menu m1: menuList){
				//自身系统的业务需求,当展示自身所拥有的权限时,复选框需要选中
				if(menuList2.contains(m1.getId())){
					m1.setChecked(true);
				}
				map.put(m1.getId(), m1);
			}
			
			//再遍历所有的权限集合,确定父子关系
			for(Menu m1 : menuList){
				Menu menu = new Menu();
				//有父亲
				if(m1.getPid() != null && !"".equals(m1.getPid())){
					//取出父子
					Menu cMenu = (Menu)map.get(m1.getId());
					Menu pMenu = (Menu)map.get(m1.getPid());
					//这个还需商讨,有种情况是当只有一个孩子的时候,父亲不需要显示(具体看业务需求)
					if(pMenu != null){
						pMenu.getChildren().add(cMenu);
						pMenu.setChecked(false);
					}
				}else{
					m1.setChecked(false);
					list.add((Menu)map.get(m1.getId()));
				}
			}
			
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}


 
  

你可能感兴趣的:(easyui,java)