基于jsTree的无限级树JSON数据的转换代码


Posted in Javascript onJuly 27, 2010

jstree 主页 :
http://www.jstree.com/

其中提供了一种从后台取数据渲染成树的形式:

$("#mytree").tree({ 
data : { 
type : "json", 
url : "${ctx}/user/power!list.do" 
} 
});

对于url中返回的值必须是它定义的json数据形式:
$("#demo2").tree({ 
data : { 
type : "json", 
json : [ 
{ attributes: { id : "pjson_1" }, state: "open", data: "Root node 1", children : [ 
{ attributes: { id : "pjson_2" }, data: { title : "Custom icon", icon : "../media/images/ok.png" } }, 
{ attributes: { id : "pjson_3" }, data: "Child node 2" }, 
{ attributes: { id : "pjson_4" }, data: "Some other child node" } 
]}, 
{ attributes: { id : "pjson_5" }, data: "Root node 2" } 
] 
} 
});

这里需要一个从后台实例集合转换为它规定的json数据的形式.
/** *//** 
* 无限递归获得jsTree的json字串 
* 
* @param parentId 
* 父权限id 
* @return 
*/ 
private String getJson(long parentId) 
{ 
// 把顶层的查出来 
List<Action> actions = actionManager.queryByParentId(parentId); 
for (int i = 0; i < actions.size(); i++) 
{ 
Action a = actions.get(i); 
// 有子节点 
if (a.getIshaschild() == 1) 
{ 
str += "{attributes:{id:\"" + a.getAnid() 
+ "\"},state:\"open\",data:\"" + a.getAnname() + "\" ,"; 
str += "children:["; 
// 查出它的子节点 
List<Action> list = actionManager.queryByParentId(a.getAnid()); 
// 遍历它的子节点 
for (int j = 0; j < list.size(); j++) 
{ 
Action ac = list.get(j); 
//还有子节点(递归调用) 
if (ac.getIshaschild() == 1) 
{ 
this.getJson(ac.getParentid()); 
} 
else 
{ str += "{attributes:{id:\"" + ac.getAnid() 
+ "\"},state:\"open\",data:\"" + ac.getAnname() 
+ "\" " + " }"; 
if (j < list.size() - 1) 
{ 
str += ","; 
} 
} 
} 
str += "]"; 
str += " }"; 
if (i < actions.size() - 1) 
{ 
str += ","; 
} 
} 
} 
return str; 
}

调用:
@org.apache.struts2.convention.annotation.Action(results = 
{ @Result(name = "success", location = "/main/user/action-list.jsp") }) 
public String list() 
{ 
String str = "["; 
// 从根开始 
str += this.getJson(0); 
str += "]"; 
this.renderJson(str); 
return null; 
}

其中Action是菜单类或权限类等的实体。
效果图:
基于jsTree的无限级树JSON数据的转换代码
Javascript 相关文章推荐
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
javascript 表格内容排序 简单操作示例代码
Jan 03 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
jquery+ajax实现跨域请求的方法
Jan 20 Javascript
JavaScript变量的作用域全解析
Aug 14 Javascript
AngularJS学习笔记之依赖注入详解
May 16 Javascript
DOM 事件的深入浅出(二)
Dec 05 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
jquery实现的table排序功能示例
Mar 10 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
layui关闭层级、简单监听的实例
Sep 06 Javascript
CocosCreator入门教程之网络通信
Apr 16 Javascript
XENON基于JSON变种
Jul 27 #Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
Jul 26 #Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
Jul 26 #Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 #Javascript
JQuery的Validation插件中Remote验证的中文问题
Jul 26 #Javascript
基于JQuery的一句代码实现表格的简单筛选
Jul 26 #Javascript
jQuery getJSON 处理json数据的代码
Jul 26 #Javascript
You might like
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
php字符串截取函数用法分析
2014/11/25 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
17个Python小技巧分享
2015/01/23 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
Python内存读写操作示例
2018/07/18 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
高级销售求职信
2014/02/21 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技