基于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 相关文章推荐
Google Suggest ;-) 基于js的动态下拉菜单
Oct 11 Javascript
JS 分号引起的一段调试问题
Jun 18 Javascript
js中巧用cssText属性批量操作样式
Mar 13 Javascript
网页前端优化之滚动延时加载图片示例
Jul 13 Javascript
jQuery常用操作方法及常用函数总结
Jun 19 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 Javascript
jQuery实现checkbox列表的全选、反选功能
Nov 24 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
jQuery select自动选中功能实现方法分析
Nov 28 Javascript
uploader秒传图片到服务器完整代码
Apr 22 Javascript
详细分析单线程JS执行问题
Nov 22 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脚本数据库功能详解(中)
2006/10/09 PHP
PHP中的extract的作用分析
2008/04/09 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
React中的render何时执行过程
2018/04/13 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
python下载文件时显示下载进度的方法
2015/04/02 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
python 如何将office文件转换为PDF
2020/09/22 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
幼儿园家长评语
2014/02/10 职场文书
会计工作决心书
2014/03/11 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js