easyui menu tree 實現左側選單樹
阿新 • • 發佈:2019-01-04
@ResponseBody
@RequestMapping("menuTreeEasyUI")
public String menuTreeEasyUI(HttpServletRequest request,HttpServletResponse response) {
HttpSession session = request.getSession();
response.setContentType(contentType);
Integer type = RequestHandler.getInteger(request, "systemType");
Map con = new HashMap();
con.put("adminID", session.getAttribute(SessionName.ADMIN_USER_ID));
con.put("systemType", type);
//獲得使用者許可權
List<Privilege> userPriList = privilegeService.getPriByUser(con);
List<TreeMenu> tmList = new ArrayList<TreeMenu>();//所有一級目錄集合
for(Privilege p : userPriList){
if(p.getParentID()==-1){//父ID是-1說明是一級目錄
TreeMenu menu = new TreeMenu();
menu.setId(p.getPrivilegeID()+"");
menu.setState("open");
menu.setText(p.getPrivilegeName());
menu.setIconCls("icon-man");
Map<String,String> attrMap = new HashMap<String, String>();
attrMap.put("url",p.getActionURL());
menu.setAttributes(attrMap);
List<TreeMenu> childList =getChildren(p,userPriList);
if(childList!=null&&childList.size()>0){//如果一級目錄子目錄不為空才展示出來
menu.setChildren(childList);
tmList.add(menu);
}
}
}
String jsonStr =JSON.toJSONString(tmList);//以一級目錄為根,構建樹的json字串
return jsonStr;
}
/**
* 根據當前目錄,遞迴找到其所有子節點
* @param p
* @param userPriList
* @return
* @date 20160914
* @author zhouzhenwei
*/
private List<TreeMenu> getChildren(Privilege p, List<Privilege> userPriList) {
if(p.getTreeType()==2){//type為2 代表葉子節點
return null;
}else{
List<TreeMenu> mList = new ArrayList<TreeMenu>();
for(Privilege cp : userPriList ){//在許可權集合中找到,當前許可權選單的子節點
if((cp.getParentID()+1)==(p.getPrivilegeID()+1)){//如果某個選單的父ID為當前選單ID,那麼就把它作為當前選單的child
//封裝選單物件
TreeMenu tm = new TreeMenu();
tm.setId(cp.getPrivilegeID()+"");
tm.setState("open");
tm.setText(cp.getPrivilegeName());
tm.setIconCls("icon-lock");
Map<String,String> attrMap = new HashMap<String, String>();
attrMap.put("url",cp.getActionURL());
tm.setAttributes(attrMap);
tm.setChildren(getChildren(cp,userPriList));
mList.add(tm);
}
}
return mList;
}
}