基于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下的keyCode键码值表
Apr 10 Javascript
点图片上一页下一页翻页效果
Jul 09 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
解析prototype,JQuery中跳出each循环的方法
Dec 12 Javascript
javascript实现根据3原色制作颜色选择器的方法
Jul 17 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 Javascript
AngularJS HTML DOM详解及示例代码
Aug 17 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
Dec 28 Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 27 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
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
input的focus方法使用
2010/03/13 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
pandas string转dataframe的方法
2018/04/11 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python SVD压缩图像的实现代码
2019/11/05 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
全民健身日活动方案
2014/01/29 职场文书
党员公开承诺事项
2014/03/25 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
公司周年庆活动方案
2014/08/25 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
单位政审意见范文
2015/06/04 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
python for循环赋值问题
2021/06/03 Python