EasyUI Tree递归方式获取JSON
最近需要用到EASYUI中的TREE功能,以前我是直接拼接成<UL><LI>发现这样拼完之后在更改树后对树的刷新不是很理想,现改用JSON格式,首先分析TREE中JOSN格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
[{ "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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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里传数据,首先分析 数据库表中结构
1
2
3
4
5
|
create table depatment( id, --当前ID pid, --父ID name --显示名称 ) |
接下来我们要建立一个COM.UTIL包,所递归方法放置在这个包下,以便后续多次调用方便
建立类名为:JSONFACTORY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
/* * 以对象形式传回前台 */ 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中写法就不细说了;
控制器写法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@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(){})中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$( "#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构建:
1
2
3
|
< ul id = "tt1" > </ ul > |
启动TOMCAT预览就可以看到一个树形图的效果了!
关注公众号,分享干货,讨论技术
EasyUI Tree递归方式获取JSON的更多相关文章
- MVC4中EasyUI Tree异步加载JSON数据生成树
1,首先构造tree接受的格式化数据结构MODEL /// <summary> /// 定义EasyUI树的相关数据,方便控制器生成Json数据进行传递 /// </summar ...
- 用递归方式在JSON中查找对象
Json文件例子: { "type": "Update", "data": { "temp": "v" ...
- 树状sql--采用递归方式获取节点
创建数据库 create table City(id varchar(3) primary key , pid varchar(3) , name varchar(10)) 插入数据 insert i ...
- jQuery AJAX获取JSON数据解析多种方式示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- J2EE Web开发入门—通过action是以传统方式返回JSON数据
关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...
- AngularJS学习笔记(3)——通过Ajax获取JSON数据
通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...
- C++通过HTTP请求Get或Post方式请求Json数据(转)
原文网址:https://www.cnblogs.com/shike8080/articles/6549339.html #pragma once#include <iostream>#i ...
- ajax获取json数据为undefined--原因解析
解决办法:var dataObj=eval("("+data+")");//转换为json对象 问题: 1. 碰到一个问题ajax成功获取json数据后,取值显 ...
- [转]easyui tree 模仿ztree 使用扁平化加载json
原文地址:http://my.oschina.net/acitiviti/blog/349377 参考文章:http://www.jeasyuicn.com/demo/treeloadfilter.h ...
随机推荐
- 无法启动mysql服务 错误1067:进程意外中止
这个错误在前些周遇到过,没有解决,直接粗暴的卸载重装了,自己用的是wampserver集成环境,重装的后果是mysql里面的一些已有的数据库就没有了,有点小悲剧,不过幸好都是一些测试用的数据库,后面直 ...
- laravel开发环境部署遇到的问题和个人感受
>感受 用chrome浏览器 英语很重要 跟上更新的步伐 要不断学习 问问题要把问题描述清楚,先尝试解决,解决不了再问大佬 情绪要稳定,不能因为一个问题困扰两天就想放弃了 发现了 stack o ...
- 福州大学软工1816 | K班 第一次作业
(一)回想一下你初入大学时对计算机专业的畅想 (1)当初你是如何做出选择计算机专业的决定的? 本身对于计算机感兴趣.高考完之后翻了书,对于物理数学等基础学科兴趣不大,对金融等商科几乎毫无了解,再加上当 ...
- ACM 第十七天
暑期热身赛 BAPC 2014 The 2014 Benelux Algorithm Programming Contest 题目网址:https://odzkskevi.qnssl.com/3655 ...
- lintcode-197-排列序号
197-排列序号 给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号.其中,编号从1开始. 样例 例如,排列 [1,2,4] 是第 1 个排列. 思路 参考http://www ...
- 工具函数:cookie的添加、获取、删除
cookie是浏览器存储的命名数据,作用是保存用户的信息,这样我们就可以用这些信息来做一些事了,但是cookie容量很小,只有4kb. 下面是我总结的cookie的添加.获取.删除的函数: cooki ...
- cacti 添加redis监控(远程服务器)
监控主机 192.168.24.69 ,以下用A表示 被监控主机 192.168.24.79,以下用B标识 记得在A服务器的cacti中导入监控mysql的templates文件 拷贝ss_get ...
- Redis集群分布(Windows版)
Redis系列 作者Mr.Chen,转载请注明博客出处:http://www.cnblogs.com/cjh-notes/ 第一步:下载安装redis windows版的下载地址:https://gi ...
- [C/C++] 友元函数和友元类
A---友元函数: class Data{ public: ... friend int f(int &m);//友元函数 ... } 友元函数是可以直接访问类的私有成员的非成员函数.它是定义 ...
- WPF 分页控件的实现 -用户控件
效果图: