生成树形菜单的工具类
如果需要在前台生成一个这样的下拉菜单(父子菜单),对应的在后端如何实现呢?
package com.jp.util;
import com.jp.web.system.entity.SysMenu;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* 生成树工具
*/
public class MakeMenuTree {
public static List<SysMenu> makeTree(List<SysMenu> menuList,Integer pid){
List<SysMenu> result = new ArrayList<>();
//取出集合数据,如果是空,就返回空集合,如果不是空就返回集合本身
Optional.ofNullable(menuList).orElse(new ArrayList<>())
.stream()
// 过滤出pid等于参数的菜单
.filter(dom->dom!=null && dom.getParentId()==pid)
.forEach(item->{
//遍历菜单,并复制
SysMenu menu = new SysMenu();
BeanUtils.copyProperties(item,menu);
//递归查找当前菜单的子菜单
List<SysMenu> children = makeTree(menuList, menu.getMenuId());
menu.setChildren(children);
result.add(menu);
});
return result;
}
}