`
tntxia
  • 浏览: 1506666 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ExtJs结合Dwr的tree

阅读更多

目录结构:

 

 

index.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'index.jsp' starting page</title>
    <link rel="stylesheet" type="text/css" href="<%=basePath%>/ext/resources/css/ext-all.css" />
    <script type="text/javascript"  src="<%=basePath%>/ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript"  src="<%=basePath%>/ext/ext-all.js"></script>
     <script type="text/javascript"  src="<%=basePath%>/tree.js"></script>
     <script type='text/javascript' src='<%=basePath%>/js/DWRTreeLoader.js'></script>
  <script type='text/javascript' src='<%=basePath%>/dwr/engine.js'></script>
  <script type='text/javascript' src='<%=basePath%>/dwr/interface/TreeService.js'></script>
  </head>
  <body>
  <div id="tree"></div>
  </body>
</html>
 




 tree.js文件
Ext.onReady(function() {
   
    var root = new Ext.tree.AsyncTreeNode({
                id : "root",
                leaf : false,
                text : "树的根"
            });
    var loader = new Ext.tree.DWRTreeLoader({   
                   dataUrl:TreeService.getAllChildren   
               }) 

    var viewTree = new Ext.tree.TreePanel({
                id : 'vtree',
                renderTo : "tree",
                root : root,
                loader : loader,
                width : 200,
                height : 300,
                title : "动态遍历树",
                useArrows : true,//是否使用箭头样式
                autoScroll : true,//滚动条
                animate : true,//展开,收缩动画
                rootVisible : true,//根节点是否可见
//                enableDD : true,//是否可以拖放节点
                tbar : [{
                            tooltip : "重新加载",
                            icon : "extjs&dwr_Tree/images/icons/reload-green.png",
                            cls : "x-btn-text-icon",
                            handler : function() {
                                viewTree.getRootNode().reload()
                            }
                        }, "-", {
                            icon : "extjs&dwr_Tree/images/icons/expand-all.gif",
                            cls : "x-btn-text-icon",
                            tooltip : "全部展开",
                            handler : function() {
                                viewTree.getRootNode().expand(true)
                            }
                        }, {
                            icon : "extjs&dwr_Tree/images/icons/collapse-all.gif",
                            cls : "x-btn-text-icon",
                            tooltip : "全部折叠",
                            handler : function() {
                                viewTree.getRootNode().collapse(true)
                            }
                        }],
                        tools : [{
                                    id : 'refresh',
                                    handler : function() {
                                        var tree = Ext.getCmp('vtree');
                                        tree.body.mask("数据加载中..",
                                                "x-mask-loading");
                                        tree.root.reload();
                                        tree.root.expand(true, false,
                                                function() {
                                                    tree.body.unmask();
                                                });
                                    }
                                }],   
                region : "west",
                collapseMode : "mini",
                collapsible : true,//面板是可收缩的,并自动渲染一个展开/收缩的轮换按钮在头部工具条
                margins : "0 0 0 0",
                split : true,
                border : true
            });
});

Node类:
package test;

public class Node {
    private int id;
    private String text;
    private boolean leaf;
   
   
    public Node(int id, String text,boolean leaf) {
        this.id = id;
        this.text = text;
        this.leaf = leaf;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    public boolean isLeaf() {
        return leaf;
    }
    public void setLeaf(boolean leaf) {
        this.leaf = leaf;
    }
}


TreeService类:
package test;

import java.util.ArrayList;
import java.util.List;

public class TreeService {
    public List getAllChildren(String parentId) {

        List list = new ArrayList();
        if (parentId.equals("root")) {
            list.add(new Node(1,"子节点1",false));
            list.add(new Node(2,"子节点2",false));
            list.add(new Node(3,"子节点3",false));
            list.add(new Node(4,"儿子节点4",false));
            list.add(new Node(5,"子节点5",false));
            list.add(new Node(6,"而子节点6",false));
        } else if (parentId.equals("2")) {
            list.add(new Node(9,"孙子节点9",true));
            list.add(new Node(7,"孙子节点7",true));
            list.add(new Node(8,"孙子节点8",true));
        } else if (parentId.equals("4")) {
            list.add(new Node(11,"孙子节点11",true));
            list.add(new Node(12,"孙子节点12",true));
            list.add(new Node(13,"孙子节点13",true));
        } else if (parentId.equals("6")) {
            list.add(new Node(21,"孙子节点21",true));
            list.add(new Node(22,"孙子节点22",true));
            list.add(new Node(23,"孙子节点23",true));
        }
        return list;
    }
}

DWRTreeLoader.js文件:
Ext.tree.DWRTreeLoader = function(config) {  
  Ext.tree.DWRTreeLoader.superclass.constructor.call(this, config);  
};  
  Ext.extend(Ext.tree.DWRTreeLoader, Ext.tree.TreeLoader, {  
   args:[],  
   requestData : function(node, callback) {  
    if (this.fireEvent("beforeload", this, node, callback) !== false) {  
      var callParams = new Array();         
      var success = this.handleResponse.createDelegate(this, [node, callback], 1);  
      var error = this.handleFailure.createDelegate(this, [node, callback], 1);  
      callParams.push(node.id);  
      callParams.push({callback:success, errorHandler:error});  
      this.transId=true;  
      this.dataUrl.apply(this, callParams);  
    } else {  
      if (typeof callback == "function") {  
        callback();  
      }  
    }  
  },  
    processResponse : function(response, node, callback){  
        try {  
          for(var i = 0; i < response.length; i++){  
                var n = this.createNode(response[i]);  
                if(n){  
                    node.appendChild(n);  
                }  
            }  
            if(typeof callback == "function"){  
                callback(this, node);  
            }  
        }catch(e){  
            this.handleFailure(response);  
        }  
    },  
    handleResponse : function(response, node, callback){  
        this.transId = false;  
        this.processResponse(response, node, callback);  
        this.fireEvent("load", this, node, response);  
    },  
 
    handleFailure : function(response, node, callback){  
        this.transId = false;  
        this.fireEvent("loadexception", this, node, response);  
        if(typeof callback == "function"){  
            callback(this, node);  
        }  
    }  
});    


 web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
   <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
</web-app>


 dwr.xml文件:
<?xml version="1.0" encoding="UTF-8"?>  
<dwr>
    <allow>
        <create javascript="TreeService" creator="new">
            <param name="class" value="test.TreeService"></param>
        </create>       
        <convert converter="bean" match="test.Node" />
    </allow>
</dwr>  






显示结果:

 

分享到:
评论
1 楼 tracy-hzz 2013-07-30  
引用
引用
[i][/i]

相关推荐

    extjs兼容dwr的代理和DWRTreeLoader

    结合DWRProxy和DWRTreeLoader,你可以实现一个完全动态的、基于DWR的ExtJS树形视图。例如,当用户展开树的一个节点时,DWRTreeLoader会自动调用DWR服务获取子节点数据,然后通过DWRProxy将结果返回给客户端,更新树...

    基于s2sh+Extjs+dwr OA系统带全部JAR

    用的东西比较杂,主要为了学习一下知识呵呵: ssh2、dwr、jquery、extjs、jquery weekcalendar、jfreechart、jasperreport 联系人实现了拖动实现好友分组。可以把grid直接拖到tree,不同于其他的例子,拖动grid后会...

    Extjs Tree + JSON + Struts2 示例源代码

    ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...

    ext 与 dwr 的结合

    总之,EXTJS与DWR的结合是构建富客户端Web应用的一种高效方式,通过这种结合,开发者可以在保持前端用户体验的同时,充分利用Java的强大功能和灵活性。掌握这两者的集成技术,对于提升Web应用的交互性和响应速度至关...

    Extjs+数据库+dwr+案例+xml

    在ExtJS应用中,DWR作为桥梁,帮助我们处理与服务器端的数据通信,使得动态更新、数据检索变得简单。 XML,全称可扩展标记语言(eXtensible Markup Language),是用于传输和存储数据的一种标准格式。在Web开发中,...

    ajax+DWR实战

    - **数据绑定**: 使用DWR获取的数据直接填充到ExtJS的Grid、Tree等组件,实现数据的实时刷新。 ### 5. 示例代码 ```java // 服务器端Java接口 public interface MyService { List&lt;String&gt; getNames(); } // ...

    ExtJS对Ajax的支持

    ExtJS与DWR的结合可以进一步增强Web应用的实时性和交互性。 ##### 2.1 在Grid中使用DWR获取后台数据 在ExtJS的Grid控件中,可以利用DWR技术直接从服务器获取数据并填充网格。这涉及到创建一个DWR代理,该代理暴露...

    DWRExt Tree

    【DWRExt Tree】是一种基于Web的用户界面技术,它结合了DWR(Direct Web Remoting)和ExtJS库来创建交互式的树形组件。在本文中,我们将深入探讨这两个技术以及它们如何协同工作,创建出动态且功能丰富的树结构。 ...

    Extjs动态树的实现以及节点拖拽

    同时,ExtJS中的menu、tree、window等组件以及事件机制也是实现动态树的关键。 在实际项目中,动态树的实现可能还需要考虑到数据的存储结构,如导航数据表,以及页面的布局和源码组织。为了创建一个完整的动态树...

    整合--Struts2为extjs提供server数据

    Extjs的`JsonReader`会解析这个响应,将数据绑定到Grid、Tree或其他组件中。 例如,在给出的部分内容中,我们可以看到一个使用`Ext.data.GroupingStore`的例子,它通过`HttpProxy`与服务器进行通信,配置了`url`...

    精通JS脚本之ExtJS框架.part2.rar

    10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1 折叠布局——AccordionLayout 11.1.2 边框布局——BorderLayout 11.1.3 卡片式布局——CardLayout 11.1.4 ...

    ssh2 extjs oa

    用的东西比较杂,主要为了学习一下知识呵呵: ssh2、dwr、jquery、extjs、jquery weekcalendar、jfreechart、jasperreport 联系人实现了拖动实现好友分组。可以把grid直接拖到tree,不同于其他的例子,拖动grid后会在...

    DWR+jquery2.x+easyUI1.3.x开发富客户端应用

    1. **SSH+jQuery+DWR+EasyUI 实战**:本文档通过一系列的实战案例展示了如何将 Struts2、Spring3、Hibernate4 与 DWR、jquery2.x 和 easyUI1.3.x 结合起来开发实际的应用。 2. **实战案例详解**: - SSH 架构集成...

    精通JS脚本之ExtJS框架.part1.rar

    10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1 折叠布局——AccordionLayout 11.1.2 边框布局——BorderLayout 11.1.3 卡片式布局——CardLayout 11.1.4 ...

    dwrproxy dwrtreeloader

    在Web应用程序开发中,ExtJS和Direct Web Remoting (DWR)是两种常见的技术,用于构建富客户端界面和实现服务器端交互。标题中的"dwrtproxy"和"dwrproxy.js"指的是DWR中的一个关键组件——DWR Proxy,而...

    ext2.0+dwr 实现的动态树

    ExtJS 是一款强大的JavaScript库,主要用于构建富客户端的Web应用程序,尤其在数据可视化和用户界面交互方面表现出色。其中,Ext2.0是该库的一个早期版本,它提供了丰富的组件和功能,包括我们今天要讨论的“动态树...

    自己用ssh2 和 ext 做的简单oa

    用的东西比较杂,主要为了学习一下知识呵呵: ssh2、dwr、jquery、extjs、jquery weekcalendar、jfreechart、jasperreport 联系人实现了拖动实现好友分组。可以把grid直接拖到tree,不同于其他的例子,拖动grid后会在...

    Ext 开发指南 学习资料

    8.7.5. SplitButton让按钮和菜单结合 8.8. 蓝与灰,切换主题 8.9. 悬停提示 8.9.1. 起初,初始化 8.9.2. 诞生,注册提示 8.9.3. 分支,标签提示 8.9.4. 发展,全局配置 8.9.5. 进化,个体配置 8.10. 灵异事件,Ext....

Global site tag (gtag.js) - Google Analytics