连接数据库动态加载多级菜单

后台:

public void initMenu2(HttpSession session){
		Map<String,List<Menu>> maps = new HashMap<String,List<Menu>>();
		String parenid = null;
		int count = 0;
		List<Menu> listMenu = menuService.findAll();
		if(listMenu.size() != 0){
			for(int i = 0;i < listMenu.size();i++){
				//找出父节点与子节点相同的
				if(listMenu.get(i).getMenuId().equals(listMenu.get(i).getParenId())){
					parenid = listMenu.get(i).getParenId();
					List<Menu> listMenus = new ArrayList<Menu>();
					//将同一父节点的数据放入同一个map中
					for(int j = 0; j < listMenu.size(); j++ ){
						if(listMenu.get(j).getParenId().equals(parenid)){
							listMenus.add(listMenu.get(j));
						}
					}
					String str = "group"+count;
					maps.put(str, listMenus);
					count ++;
				}
			}
		}
		/*//测试目录结构是否正确
		if(maps.size() != 0){
			for(int i = 0; i< maps.size();i++){
				String str = "group"+i;
				if(maps.get(str).size() != 0){
					System.out.println(maps.get(str).size());
					List<Menu> cl = maps.get(str);
					for(int j = 0; j < cl.size(); j ++){
							Menu menu = cl.get(j);
							System.out.println(menu.getMenuName());
					}
				}
			}
		}*/
		session.setAttribute("menuMaps", maps);
	}

jsp页面,layui框架 ,el表达式:

<c:forEach items="${menuMaps}" var="menuMap">
              			<li>
              				<c:forEach items="${menuMap.value}" var="list">
              					<c:if test="${list.menuId == list.parenId}">
	                				<a href="#">
			                           	<i class="fa fa-home"></i>
			                            <span class="nav-label">${list.menuName}</span>
			                            <span class="fa arrow"></span>
			                        </a>
                          		</c:if>
                           <ul class="nav nav-second-level">
                           	<li>
                           		<c:if test="${list.menuId != list.parenId}">
                           	 		<a class="J_menuItem" href="${domain}${list.menuUrl}" >${list.menuName}</a>
                           	 	</c:if>
                           	</li>
                           </ul>
                           </c:forEach>
                         </li>
                    </c:forEach> 

页面效果:




猜你喜欢

转载自blog.csdn.net/sinat_38314794/article/details/79220329