基于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应用于login页面的问题及解决
Oct 17 Javascript
jQuery 学习第五课 Ajax 使用说明
May 17 Javascript
jquery form表单提交插件asp.net后台中文解码
Jun 12 Javascript
利用jquery包将字符串生成二维码图片
Sep 12 Javascript
jQuery性能优化的38个建议
Mar 04 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 Javascript
JavaScrpt判断一个数是否是质数的实例代码
Jun 11 Javascript
基于JS脚本语言的基础语法详解
Jul 22 Javascript
Node.JS更改Windows注册表Regedit的方法小结
Aug 18 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 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
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
js如何验证密码强度
2020/03/18 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
银行求职推荐信范文
2013/11/30 职场文书
教师求职信范文分享
2013/12/27 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
采购助理岗位职责
2014/02/16 职场文书
教师教学评估方案
2014/05/09 职场文书
企业安全标语
2014/06/07 职场文书
教师节慰问信
2015/02/15 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python