基于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 相关文章推荐
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
Extjs学习笔记之九 数据模型(上)
Jan 11 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
Jul 10 Javascript
用Move.js配合创建CSS3动画的入门指引
Jul 22 Javascript
JS 实现Base64编码与解码实例详解
Nov 07 Javascript
jQuery Pagination分页插件使用方法详解
Feb 28 Javascript
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
React组件重构之嵌套+继承及高阶组件详解
Jul 19 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
webpack3升级到webpack4遇到问题总结
Sep 30 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
PHP学习资料汇总与网址
2007/03/16 PHP
php实现mysql数据库备份类
2008/03/20 PHP
php一个找二层目录的小东东
2012/08/02 PHP
php curl_init函数用法
2014/01/31 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
浅谈Python 对象内存占用
2016/07/15 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
解决python 输出是省略号的问题
2018/04/19 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
Python如何telnet到网络设备
2021/02/18 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
乡镇三严三实学习心得体会
2014/10/13 职场文书
工伤私了协议书范本
2014/11/24 职场文书
自主招生英文自荐信
2015/03/25 职场文书
新闻稿格式范文
2015/07/18 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python