标签:
首先介绍,权限管理是将菜单信息全部写在数据库中(如图,菜单ID,父菜单ID,菜单名称,菜单点击跳转的路径,状态,菜单级别。。。这里菜单分为3级别)。
出来的3级样子
介绍思路:根据登录的用户,去查询角色,然后查询出用户拥有的菜单。
接着将查询结果拼接成导航中的菜单信息。
/** * 登录以后获取用户所拥有的菜单 * @param pd * @return * @throws Exception
*这里的PageData是传入的参数,这里当然是用户的账号 */ public String findMenu(PageData pd) throws Exception{ //pd.put("USER_ID", "U001"); List<MenuEntity> menuList = (List<MenuEntity>) dao.findForList("MenuMapper.loginFindMenu", pd); //查询用户的所有菜单 List<MenuEntity> nodeList1 = new ArrayList<MenuEntity>(); //用于存放一级菜单 List<MenuEntity> nodeList2 = new ArrayList<MenuEntity>(); //用于存放二级菜单 List<MenuEntity> nodeList3 = new ArrayList<MenuEntity>(); //用来存放三级菜单 for(int i=0;i<menuList.size();i++){ if("1".equals(menuList.get(i).getNODE_TYPE())){ nodeList1.add(menuList.get(i)); } if("2".equals(menuList.get(i).getNODE_TYPE())){ nodeList2.add(menuList.get(i)); } if("3".equals(menuList.get(i).getNODE_TYPE())){ nodeList3.add(menuList.get(i)); } } sb = new StringBuffer(); //用来存放菜单拼接的字符串 for(int m1=0;m1<nodeList1.size();m1++){//BUTTON_ID menuTmp1 = nodeList1.get(m1); sb.append("<li><a href=\"#\">").append("<i class="+menuTmp1.getBUTTON_ID()+"></i>").append("<span class=\"nav-label\">").append(menuTmp1.getMENU_NAM()); sb.append("</span><span class=\"fa arrow\"></span></a>"); sb.append(" <ul class=\"nav nav-second-level\">"); for(int i = 0; i< nodeList2.size(); i++){ menuTmp2 = nodeList2.get(i); if(menuTmp1.getMENU_ID() == menuTmp2.getMENU_PAR_ID()){ sb.append("<li>"); sb.append("<a href=\"#\">").append(menuTmp2.getMENU_NAM()).append("<span class=\"fa arrow\"></span></a>"); sb.append(" <ul class=\"nav nav-third-level\">"); for(int j=0;j<nodeList3.size();j++){ menuTmp3 = nodeList3.get(j); if(menuTmp2.getMENU_ID() == menuTmp3.getMENU_PAR_ID()){ sb.append("<li><a class=\"J_menuItem\" ").append("href=\"/UM-Web-BRS"+menuTmp3.getMENU_URL()+"\"").append(">"+menuTmp3.getMENU_NAM()+"</a></li>"); } } sb.append("</ul>"); sb.append("</li>"); } } sb.append("</ul>"); sb.append("</li>"); } return sb.toString(); }
controller中的代码
@RequestMapping("/LoginFindMenu") public ModelAndView LoginFindMenu(HttpServletRequest request) throws Exception{ logger.info("用户菜单查询---> 参数列表:"+pd); String menuHtml = loginService.findMenu(pd); ModelAndView mv = new ModelAndView("index.jsp") ;//需要跳转的路径 mv.addObject("menuHtml", menuHtml); return mv; }
最后将结果放回页面的相应地方
<div class="logo-element">UM</div>
</li>
${menuHtml}
</ul>
权限管理就完成了
标签:
原文地址:http://www.cnblogs.com/guokai870510826/p/5774042.html