//**
*实体列
*/
public class Nodes {
private int id;//主键IDprivate String parentId;//父节点ID
private String hrefAddress;//存放路径
private String nodeName;//节点名称
private List<Nodes> children=new ArrayList<Nodes>();//子节点集合
//此处省略get和set方法......
}
//**
*获取树结构数据
*/
@RequestMapping(value="/main")
public ModelAndView getList(){
ModelAndView mv = this.getModelAndView();
List<Nodes> list=menuService.getAllMenu();//去数据库获取所有Menu数据
List<Nodes> menuList=analysisList(list);
JSONArray arr = JSONArray.fromObject(menuList);
String json = arr.toString();
//json =json.replaceAll("nodeName", "name").replaceAll("hrefAddress","url");如果所用到的tree插件需要替换的话可以用这个
mv.setViewName("main");
mv.addObject("zTreeNodes", json);
return mv;
}
//**
* 组装数据
* @param list 所有菜单集合
* @return
*/
private List<Nodes> analysisList(List<Nodes> list){
List<Nodes> newList=null;
if(list!=null&&!list.isEmpty()){
newList=new ArrayList<Nodes>();
for (Nodes testEntity : list) {
if (testEntity.getParentId().equals("1")) {//父级菜单开始添加
if (ifChilds(list, testEntity.getId())) {//存在子集
List<Nodes> childs = new ArrayList<Nodes>();
childs = getChildList(list,testEntity.getId(),childs);
testEntity.getChildren().addAll(childs);
}
newList.add(testEntity);
}
}
}else{
newList=list;
}
return newList;
}
//获取父id下的子集合
private List<Nodes> getChildList(List<Nodes> list,int pId,List<Nodes> childs) {
for (Nodes testEntity : list) {
if (testEntity.getParentId().equals(String.valueOf(pId))) {//查询下级菜单
if (ifChilds(list, testEntity.getId())) {
List<Nodes> newChilds = new ArrayList<Nodes>();
newChilds = getChildList(list,testEntity.getId(),newChilds);
testEntity.getChildren().addAll(newChilds);
}
childs.add(testEntity);
}
}
return childs;
}
//判断是否存在子集
private boolean ifChilds(List<Nodes> list,int pId) {
boolean flag = false;
for (Nodes testEntity : list) {
if (testEntity.getParentId().equals(String.valueOf(pId))) {
flag=true;
break;
}
}
return flag;
}
//jsp页面 关键代码,这里用到是是ztree插件
<div>
<ul id="tree" ></ul>
</div>
<script type="text/javascript">
var zTree;
$(function(){
var setting = {
showLine: true,
checkable: true
};
var zn = '${zTreeNodes}';
var zTreeNodes = eval(zn);
zTree = $("#tree").zTree(setting, zTreeNodes);
});
</script>
7492



被折叠的 条评论
为什么被折叠?



