欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SPRINGMVC EASYUI TREE递归方式获取JSON  

程序员文章站 2022-06-06 16:32:02
...

最近需要用到EASYUI中的TREE功能,以前我是直接拼接成<UL><LI>发现这样拼完之后在更改树后对树的刷新不是很理想,现改用JSON格式,首先分析TREE中JOSN格式如下:

 

[{
	"id":1,
	"text":"流程分类",
	"children":[{
		"id":11,
		"text":"门禁流程分类",
		"checked":true
	},{
		"id":113,
		"text":"子门禁流程分类",
		"children":[{
			"id":1131,
			"text":"子子门禁流程分类"
		},{
			"id": 8,
			"text":"Async Folder",
			"state":"closed"
		}]
	}]
},{
	"id":3
	"text":"行政",
	"children":[{
		"id":"31",
		"text":"加班"
	},{
		"id":"33",
		"text":"请假"
	}]
}]


 可以看出这种模式是由三个属性所组成,ID TEXT 集合,根据分析 我们需要对此模式建立一个BEAN的结构模型,建立TREENODE:

package com.odbpo.beans;

import java.util.List;

public class TreeNode {

	private int id;

	private String text;
	
	private int pid;

	private List<TreeNode> children;

	public int getPid() {
		return pid;
	}

	public void setPid(int pid) {
		this.pid = pid;
	}

	public int getId() {
		return id;
	}

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

	public String getText() {
		return text;
	}

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

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

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

 BEAN构建完成,那么接下来分析如何往BEAN里传数据,首先分析 数据库表中结构

create table depatment(
id,--当前ID
pid,--父ID
name--显示名称
)

 接下来我们要建立一个COM.UTIL包,所递归方法放置在这个包下,以便后续多次调用方便

建立类名为:JSONFACTORY

/*
	 * 以对象形式传回前台
	 */
	public static List<TreeNode> buildtree(List<TreeNode> nodes,int id){
		List<TreeNode> treeNodes=new ArrayList<TreeNode>();
		for (TreeNode treeNode : nodes) {
			TreeNode node=new TreeNode();
			node.setId(treeNode.getId());
			node.setText(treeNode.getText());
			if(id==treeNode.getPid()){
				node.setChildren(buildtree(nodes, node.getId()));
				treeNodes.add(node);
			}
			
		}
		return treeNodes;
	}
	

 完成以上工作后我们就要在控制器中使用在DAO中建立好的查询方法,这里DAO中写法就不细说了;

控制器写法如下:

	@RequestMapping("/flow_tree")
	@ResponseBody
	public List<TreeNode> getTree(){
		List<TreeNode> nodes=new ArrayList<TreeNode>();
		List<FlowSortTable> list_all=flowSortTableServiceImpl.findAll();
		for (FlowSortTable flowSortTable : list_all) {
			TreeNode treeNode=new TreeNode();
			treeNode.setId(flowSortTable.getSortId());
			treeNode.setPid(flowSortTable.getSortPartmentId());
			treeNode.setText(flowSortTable.getSortName());
			nodes.add(treeNode);
		}
		List<TreeNode> treeNodes=JsonTreeFactory.buildtree(nodes,0);
		return treeNodes;
	}

 以上工作结束,我们就可以在前台使用EASYUITREE模式了

将此代码 放在$(document).ready(function(){})中

$("#tt1").tree({
  			url: '${contextPath}/main/flow/flow_tree.html',
  			onClick:function(node){
  				$("#sort").css("display","block");
  				$("#save").hide();
  				$("#update").show();
  				odbpo_combobox("#flowType",'${contextPath}/main/flow/flowSelect.html',"flowId","flowName");
  				var pnode=$(this).tree('getParent',node.target);
  				$("#flowType").combobox('setValue', pnode.id);
  				$("#node_id").val(node.id);
  				$("#node_text").val(node.text);
				console.debug(node.id);
				console.debug(node.text);			
  			}
  		})

 HTML构建:

<ul id="tt1">
			
		</ul>

 启动TOMCAT预览就可以看到一个树形图的效果了!