java生成easyui-tree返回easyui-tree类型的json数据

树的数据格式(Tree Data Format)

tree数据类型的介绍来自Easyui Tree树 EasyUi插件

  • id:节点的 id,它对于加载远程数据很重要。
  • text:要显示的节点文本。
  • state:节点状态,‘open’ 或 ‘closed’,默认是 ‘open’。当设置为 ‘closed’ 时,该节点有子节点,并且将从远程站点加载它们。
  • checked:指示节点是否被选中。
  • attributes:给一个节点添加的自定义属性。
  • children:定义了一些子节点的节点数组。
[{
    "id":1,
    "text":"Folder1",
    "iconCls":"icon-save",
    "children":[{
		"text":"File1",
		"checked":true
    },{
		"text":"Books",
		"state":"open",
		"attributes":{
			"url":"/demo/book/abc",
			"price":100
		},
		"children":[{
			"text":"PhotoShop",
			"checked":true
		},{
			"id": 8,
			"text":"Sub Bookds",
			"state":"closed"
		}]
    }]
},{
    "text":"Languages",
    "state":"closed",
    "children":[{
		"text":"Java"
    },{
		"text":"C#"
    }]
}]

Service层

使用递归获取其child集合

	//因为数据库中的类型与ztree的不一致,调用的接口是之前的代码接口,有多余的字段,这里写一个转换类,去掉无用字段
	private List<SingleStandardICCLClassifyForTree> single2Tree(List<EntityStandardCCLClassify> lists) {
		List<SingleStandardICCLClassifyForTree> treeList = new ArrayList<SingleStandardICCLClassifyForTree>();
		if (!(lists == null) && !lists.isEmpty()) {
			for (EntityStandardCCLClassify singleStandardICSClassify : lists) {
				SingleStandardICCLClassifyForTree tempTree = new SingleStandardICCLClassifyForTree();

				tempTree.setId(singleStandardICSClassify.getCCLNo());
				tempTree.setText(singleStandardICSClassify.getCCLName());

				treeList.add(tempTree);
			}
		}

		return treeList;
	}

	@Override
	public List<SingleStandardICCLClassifyForTree> getZUITree(String parentCCLNo) {
		//定义方法返回类型treeList 
		List<SingleStandardICCLClassifyForTree> treeList = new ArrayList<SingleStandardICCLClassifyForTree>();
		List<SingleStandardICCLClassifyForTree> treeParent = new ArrayList<SingleStandardICCLClassifyForTree>();
		if (null == parentCCLNo || "".equals(parentCCLNo)) {
			//dao.selectLevel()的作用是查询最外层的层级,也就是第一层
			treeParent = single2Tree(dao.selectLevel());
		}else {
			//dao.selectSecondary(parentCCLNo)的作用是查询parentCCLNo的子级
			treeParent = single2Tree(dao.selectSecondary(parentCCLNo));
		}
		if (treeParent != null && !treeParent.isEmpty()) {
			for (SingleStandardICCLClassifyForTree singleStandardICCLClassifyForTree : treeParent) {
				List<SingleStandardICCLClassifyForTree> chileTree = single2Tree(dao.selectSecondary(singleStandardICCLClassifyForTree.getId()));
				//数据库中没有最后一层级的标志,这里根据的是:如果根据当前的id查不到子级,那么他就是最后一级
				if (null !=chileTree && !chileTree.isEmpty()) {
					//如果不是最后一级,继续调用getZUITree()方法,并将查询到的值赋值给其父级的child属性
					singleStandardICCLClassifyForTree.setChildren(getZUITree(singleStandardICCLClassifyForTree.getId()));
				}
				treeList.add(singleStandardICCLClassifyForTree);
			}
		}
		return treeList;
	}

Entity层

封装了easyui-tree的部分属性,可以根据需求自行添加

import java.util.ArrayList;
import java.util.List;

public class SingleStandardICCLClassifyForTree
{
    private String id;

    private String text;
   
   //注意这里
    private List<SingleStandardICCLClassifyForTree> children = new ArrayList<>(0);

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public List<SingleStandardICCLClassifyForTree> getChildren() {
		return children;
	}

	public void setChildren(List<SingleStandardICCLClassifyForTree> children) {
		this.children = children;
	}

}

前端js代码

$("#test").tree({
			url:"${webUrlPath}standardCCL/searchByCCLNoOfMy.action",
			checkbox:false,
			animate:false,
			lines:false,
			onLoadSuccess:function(node,data){
			   //设置选中
			   var nodeSelect = $('#test').tree('find', '${sacid}');
			   $(nodeSelect.target).addClass("tree-node-selected theme-color");
			   
	           parentAll = nodeSelect.text;
	           expandParent($('#test'), nodeSelect);
			},
			onClick:function(node){
				var id = node.id;
				var searchType = "";
				if(isMajor == "0"){
					subSAC(node.text,id,isMajor,8);
				}else{
					subSAC(node.text,id,isMajor,5);
				}
			},
		});

效果图

java生成easyui-tree返回easyui-tree类型的json数据