后台:
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>
页面效果: