基于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 相关文章推荐
动态控制Table的js代码
Mar 07 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
Oct 20 Javascript
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
node前端开发模板引擎Jade的入门
May 11 Javascript
微信小程序自定义prompt组件步骤详解
Jun 12 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 Javascript
js实现简单扫雷
Nov 27 Javascript
jquery插件实现搜索历史
Apr 24 jQuery
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的大小写敏感问题整理
2011/12/29 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
javascript显示选择目录对话框的代码
2008/11/10 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
详解javascript遍历方式
2015/11/11 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python实现partial改变方法默认参数
2014/08/18 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
详解python数据结构和算法
2019/04/18 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
社区食品安全实施方案
2014/03/28 职场文书
论文指导教师评语
2014/04/28 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
驻村工作简报
2015/07/20 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android