<%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;%>

ExtJs结合Dwr的tree

系统 1644 0

目录结构:

 

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>  






显示结果:

 

ExtJs结合Dwr的tree

ExtJs结合Dwr的tree


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论