`
sacred02
  • 浏览: 6967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

dojo1.1树的两种实现——一次性加载整棵树

J# 
阅读更多
/**
* @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;
}
分享到:
评论
1 楼 azllza 2008-06-27  
哈哈  买袭击 被我发现了啊

相关推荐

    dojo1.1 javascript框架

    Dojo 1.1 JavaScript 框架是一个强大的前端开发工具集,专为构建富互联网应用程序(RIA)而设计。这个框架在2005年由SitePen公司推出,旨在提供一套完整的JavaScript库,以简化Web开发过程,提高开发效率。Dojo的...

    DOJO权威指南+DOJO1.1源码

    **DOJO权威指南+DOJO1.1源码** DOJO是一个开源的JavaScript库,它提供了丰富的工具和功能,用于构建交互式Web应用程序。这个资源集合包括了《DOJO权威指南》的中文版以及DOJO 1.1的源代码,为深入理解和应用DOJO...

    dojo异步树.js

    dojo异步树.js 实现异步加载节点功能

    基于dojo的动态树

    【基于Dojo的动态树】是一种使用JavaScript库Dojo Toolkit创建的交互式树形结构,常用于展现层次化的数据或导航菜单。Dojo Toolkit是一个功能强大的JavaScript库,它提供了多种UI组件,包括Tree组件,可以方便地在...

    Requirejs异步加载Dojo1.6

    在加载Dojo模块时,可以利用Requirejs的异步加载特性,只加载当前需要的模块,而不是一次性加载整个Dojo库,这有助于优化性能。 ### 文件结构与压缩包子文件 在名为"**DojoAMD**"的压缩包中,可能包含以下内容: - ...

    dojo所有jar包dojoroot

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,包括AJAX、DOM操作、动画效果、事件处理、数据存储等。在Java环境中,Dojo 也常被用于构建后端服务或者与Java应用进行集成。"dojo所有jar包...

    dojo的包加载机制

    其中,Dojo的包加载机制是其核心特性之一,它使得在大型应用中组织和管理JavaScript代码变得更为高效。这里我们将深入探讨Dojo的包加载机制,并结合提供的源代码和文档进行分析。 首先,Dojo的包加载机制基于AMD...

    dojo树实例

    【Dojo树实例详解】 ...对于大型的Web应用程序,Dojo Tree提供了一种优雅的方式来管理复杂的数据结构,并且易于扩展和定制。通过熟练掌握Dojo Tree,开发者可以构建出高效、可维护的用户界面,提高用户体验。

    struts2.2.1.1帮助文档——英文

    这个"struts2.2.1.1帮助文档——英文"是开发者的重要参考资料,它提供了关于Struts2框架核心组件、配置、拦截器、插件以及API的详细信息。以下是基于该文档和Struts2.2.1.1版本的一些关键知识点: 1. **MVC设计模式...

    dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程

    Dojo的核心在于它的模块化系统,这使得开发者可以按需加载代码,提高应用的性能和可维护性。 在Dojo实例中,我们通常会遇到以下知识点: 1. **模块系统**:Dojo使用AMD(Asynchronous Module Definition)模块定义...

    dojo 树形列表 dijit.tree

    同时,注意性能优化,避免一次性加载大量数据,利用Dojo的异步加载机制。 最后,`Learn`和`Libs`两个文件夹可能分别包含了示例代码和Dojo库的文件。学习这些代码可以帮助更好地理解上述知识点,并在自己的项目中...

    dojo异步树js

    dojo异步树js

    dojo 学习笔记 表单 树形列表

    和前一个树形菜单 大多数例子是基于 PHP 的 发现很多 dojo 学者想下载 dojo 的API…… 结论是:下不到的! 发现很多想下载一些帮助例子,在http://download.dojotoolkit.org/ 下才能找到,进去点版本,比如 ...

    dojo enhancedGrid pagination 分页实现

    本篇文章将深入探讨如何利用dojo enhancedGrid实现分页功能,以及如何通过静态数据和JSON文件加载数据,并使用XHR(XMLHttpRequest)进行数据请求。同时,我们还将讨论如何使用fetch API实现分页、过滤和排序。 ...

    dojo精品中文教程(包一)

    Dojo和JSON建立无限级AJAX动态加载的功能模块树 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习...

    AJAX之Dojo实现登陆框

    AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个网页的情况下,通过后台与服务器进行少量数据交换,更新部分网页的技术。Dojo是一个强大的JavaScript库,它提供了一系列丰富的功能,包括AJAX交互、DOM...

    Dojo教程

    Dojo 是一个强大的JavaScript库,特别设计用于构建富互联网应用程序(RIA)。这个框架全面地涵盖了前端开发所需的各种功能,包括DOM操作、事件处理、动画效果、数据存储以及Ajax通信等。Dojo 的核心优势在于其模块化...

    Dojo构建Ajax应用程序源码(包括书中用到的dojo-release-1.1.2)

    这个压缩包包含了Dojo框架的一个早期版本——dojo-release-1.1.2,它对于了解Dojo的历史和学习Ajax应用程序的构建非常有价值。在JavaScript的世界里,Ajax(异步JavaScript和XML)技术允许网页在不刷新整个页面的...

    dojo起步学习的好例子

    这允许我们在需要时按需加载模块,而不是一次性加载整个库。 3. **数据绑定 (Dojo Data)**:Dojo 提供了一种数据绑定机制,允许数据源与用户界面元素之间建立关联,实现数据的自动同步。 4. **AJAX (Asynchronous ...

    DOJO 学习笔记 dojo

    Dojo 是一个功能丰富的 JavaScript 库,它提供了一系列模块化、面向对象的工具,用于构建高性能的 Web 应用程序。在 Dojo 中,模块和包的概念是核心组成部分,它们帮助开发者组织和管理代码,使其更易于维护和重用。...

Global site tag (gtag.js) - Google Analytics