/**
* @descrtion: 直接获取树的整个结点, 非懒加载方式, 加上缓存, 根本就不怕它慢. 非懒加载的树主要用于静态的树,例如选择城市等
* @return
* @throws JSONException
* @author hi.baidu.com/javaroad */
public String getTreeRecursive() throws JSONException {
ITreeFactory factory = (ITreeFactory) CrmContexts.getBean(CrmContexts.getRequestParam("treeId"));
// 加上缓存
String key = CrmContexts.getRequestParam("CacheKey");
Object retRoot = CacheUtil.get("TREEROOT", key);
if (retRoot == null) {
JSONArray ret = new JSONArray();
Object[] objPool = new Object[2000]; // 结点对象池2000个够了
Object[] nodes = factory.getRoots();
int index = 0; // 记录结点对象池最后一个元素的位置
if (nodes == null) {
return ret.toString();
}
for (int i = 0; i < nodes.length; i++) {
objPool[index++] = nodes[i];
}
for (int i = 0; i < objPool.length; i++) {
Object node = objPool[i];
if (node == null) {
continue;
}
JSONObject obj = new JSONObject();
String id = factory.getId(node);
obj.put("objectId", id);
if (i < nodes.length) {
obj.put("type", "root");
}
obj.put("title", factory.getTitle(node));
if (!factory.isLeaf(node)) {
// 有子编码
Object[] children = factory.getChildren(node);
if (children != null && children.length > 0) {
// 有孩子节点
JSONArray child = new JSONArray();
for (int j = 0; j < children.length; j++) {
objPool[index++] = children[j];
JSONObject node1 = new JSONObject();
node1.put("_reference", factory.getId(children[j]));
child.put(j, node1);
}
obj.put("children", child);
}
}
ret.put(obj);
}
retRoot = ret;
CacheUtil.put("TREEROOT", key, retRoot);
}
String retu = "{identifier: 'objectId', label: 'title', items: " + retRoot.toString() + "}";
return retu;
}
分享到:
- 2008-06-24 13:16
- 浏览 718
- 评论(1)
- 论坛回复 / 浏览 (0 / 1904)
- 查看更多
相关推荐
很好的框架 AJAX javascript
DOJO权威指南+DOJO1.1源码,对于学习DOJO用很有用哦。。。
dojo异步树.js 实现异步加载节点功能
dojo的完整例子,基于dojo的动态树,包含源代码和运行实例 包含数据库文件
dojo用到的所有jar包dojoroot,
使用Requirejs异步加载Dojo1.6,运行在Tomcat6下
dojo异步树js
dojo的包加载机制, 源代码中加了注释和debug,只供大家参考
和前一个树形菜单 大多数例子是基于 PHP 的 发现很多 dojo 学者想下载 dojo 的API…… 结论是:下不到的! 发现很多想下载一些帮助例子,在http://download.dojotoolkit.org/ 下才能找到,进去点版本,比如 ...
Dojo和JSON建立无限级AJAX动态加载的功能模块树 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习...
dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程
利用dojo的enhancedGrid实现分页,利用静态数据加载和json文件方式分别加载,也利用XHR方式获取json文件数据生成grid,另外利用fetch实现分页的过滤、排序等功能。
JavaScript框架高级编程——应用Prototype、YUI、Ext JS、Dojo、MooTools JavaScript框架高级编程——应用Prototype、YUI、Ext JS、Dojo、MooTools
AJAX之Dojo实现登陆框
一、 Dojo学习笔记(1. 模块与包) 1 二、 Dojo学习笔记(2. djConfig解说) 4 三、 Dojo学习笔记(3. Dojo的基础对象和方法) 6 四、 Dojo学习笔记(4. dojo.string & dojo.lang) 9 五、 Dojo学习笔记(5. dojo.lang.array ...
Dojo和JSON建立无限级AJAX动态加载的功能模块树 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习...
经过整理的dojo 1.1官方文档
Dojo和JSON建立无限级AJAX动态加载的功能模块树 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习...
dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档
本例是通过DoJo完成的动态树。此树有又键功能。点右键可以增删改查树节点