基于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 '行 4954 错误: 不支持该属性或方法' 的问题解决方法
Jan 19 Javascript
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
JavaScript代码生成PDF文件的方法
Feb 26 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 Javascript
微信js-sdk界面操作接口用法示例
Oct 12 Javascript
vue-resourse将json数据输出实例
Mar 08 Javascript
Angular2使用jQuery的方法教程
May 28 jQuery
编写React组件项目实践分析
Mar 04 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
Apr 27 Javascript
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
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
eAccelerator的安装与使用详解
2013/06/13 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
超级退弹代码
2008/07/07 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
js闭包用法实例详解
2016/12/13 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
Python中优化NumPy包使用性能的教程
2015/04/23 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
Python自动生产表情包
2017/03/17 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
结婚邀请函范文
2014/01/14 职场文书
怀念母亲教学反思
2014/04/28 职场文书
应聘教师求职信
2014/07/19 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
2014年保育员工作总结
2014/12/02 职场文书