一,获取所有的菜单,然后进行排序
List<Menu> sourcelist = systemService.findAllMenu();
Menu.sortList(list, sourcelist, Menu.getRootId(), true);
二,具体的操作
此方法3个参数
第一个参数,新构建的menu集合
第二个参数,从数据库查询的menu集合
第三个参数,菜单的根节点
public static void sortList(List<Menu> list, List<Menu> sourcelist, String parentId, boolean cascade){
for (int i=0; i<sourcelist.size(); i++){
Menu e = sourcelist.get(i);
if (e.getParent()!=null && e.getParent().getId()!=null && e.getParent().getId().equals(parentId)){
list.add(e);
if (cascade){
// 判断是否还有子节点, 有则继续获取子节点
for (int j=0; j<sourcelist.size(); j++){
Menu child = sourcelist.get(j);
if (child.getParent()!=null && child.getParent().getId()!=null && child.getParent().getId().equals(e.getId())){
sortList(list, sourcelist, e.getId(), true);
break;
}
}
}
}
}
}