基于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 相关文章推荐
优化javascript的执行速度
Jan 23 Javascript
javascript面向对象编程代码
Dec 19 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 Javascript
jQuery Validate表单验证入门学习
Dec 18 Javascript
详解javascript高级定时器
Dec 31 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 Javascript
前端设计师们最常用的JS代码汇总
Sep 25 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
Apr 13 jQuery
移动前端图片压缩上传的实例
Dec 06 Javascript
Vue父组件向子组件传值以及data和props的区别详解
Mar 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
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP线程的内存回收问题
2016/07/08 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
2010/04/29 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
Python 基础教程之str和repr的详解
2017/08/20 Python
详解django三种文件下载方式
2018/04/06 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
个人简历自我评价
2014/02/02 职场文书
销售口号大全
2014/06/11 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
同学联谊会邀请函
2019/06/24 职场文书
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python