index.jsp页面
Java代码
<%@ 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>
<%@ 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({
dawCall:TreeService.getAllChildren //dwr关联的方法
})
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>
- 大小: 6.6 KB
分享到:
相关推荐
当我们谈论“DWR方式动态加载EXT TreePanel”时,意味着我们需要使用DWR来获取服务器端的数据,并将其动态地填充到EXT TreePanel中,以实现数据的实时更新和交互性。这种技术的应用场景可能包括:当用户需要查看或...
Ext JS的Tree组件支持动态加载,可以按需请求和显示子节点,极大地提高了用户体验。 接着,我们来看**Direct Web Remoting (DWR)**。DWR是一种让Java方法可以直接在JavaScript中调用的技术,无需编写复杂的AJAX代码...
在EXT中,DWR通常被用来作为后端数据源,为EXT的组件如Grid、Tree或Form提供数据。`dwrproxy.js`文件可能包含了以下关键内容: 1. **DWR配置**:文件可能会初始化DWR引擎,定义了哪些Java类和方法可以被JavaScript...
7. **性能优化**:如何减少网络请求,提高页面加载速度,以及DWR的缓存策略和批量处理方法。 8. **调试与测试**:使用DWR的调试工具,如DWR逆向代理和日志记录,以及EXTJS的开发模式和生产模式。 9. **实例分析**...
【标题】"dwr+ext的eclipse新工程"是一个基于Eclipse开发的项目,它结合了Direct Web Remoting (DWR) 和Ext JS技术,主要用于构建富客户端Web应用程序。DWR是一种允许JavaScript与服务器端Java代码进行交互的库,而...
总的来说,利用Ext2.0和dwr(Direct Web Remoting)实现动态树,需要理解`TreePanel`、`TreeNode`和`TreeLoader`的使用,以及如何配置异步加载和处理服务器端数据。通过这种方式,我们可以创建出具有高性能、可扩展...
在“DWRExt Tree”中,DWR被用来实现在后台处理数据和逻辑,而Ext Tree负责在前端展示这些数据。当用户操作树形视图时(例如点击节点、添加或删除节点),Ext Tree会通过DWR发送一个JavaScript调用到服务器端。DWR...
10.1.1. 无侵入式整合dwr和ext 10.1.2. DWRProxy 10.1.3. DWRTreeLoader 10.1.4. DWRProxy和ComboBox 10.2. localXHR让你在不用服务器就玩ajax 10.3. 在form中使用fckeditor 10.4. 健康快乐动起来,fx里的动画效果 ...
例如,当用户展开树的一个节点时,DWRTreeLoader会自动调用DWR服务获取子节点数据,然后通过DWRProxy将结果返回给客户端,更新树的显示。 总结,ExtJS的DWRProxy和DWRTreeLoader提供了一种强大且高效的方式来利用...
此外,Ext JS还可以与其他技术(如dwr、localXHR等)整合,增加更多的功能和灵活性。 #### 9. 常见问题解答 在Ext使用过程中,可能遇到各种问题,如Ext的收费问题、API文档的查看、在页面中引用Ext、Ext是中文乱码...
10.1.1. 无侵入式整合dwr和ext 10.1.2. DWRProxy 10.1.3. DWRTreeLoader 10.2. localXHR让你在不用服务器就玩ajax 10.3. 在form中使用fckeditor A. 常见问题乱弹 A.1. ext到底是收费还是免费 A.2. 怎么查看ext2里...
ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...
在EXT JS这个强大的JavaScript框架中,Store是一个至关重要的组件,它负责管理数据,与服务器进行交互,并为Grid、Tree等视图提供数据源。本文将深入探讨EXT中Store的应用及其重要性。 首先,Store是EXT JS中数据层...
类似地,对于Tree控件,可以使用DWR TreeLoader来异步加载树结构数据。这使得树的加载过程更加高效和流畅,特别是在数据量较大时。 ##### 2.3 DWRProxy和ComboBox DWRProxy可以与ComboBox控件结合使用,实现实时...
标题中的"dwrtproxy"和"dwrproxy.js"指的是DWR中的一个关键组件——DWR Proxy,而"dwrtreeloader"和"DWRTreeLoader.js"则涉及ExtJS中的TreePanel与DWR的集成,用于加载和展示树形结构数据。 **1. DWR(Direct Web ...
13.7 Ext.ux.DWR 13.7.1 Ext.data.DwrProxy 13.7.2 Ext.data.DWRTreeLoader 13.7.4 Web服务端配置 13.7.5 服务层接口 第14章 ExtJS扩展 14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1...
13.7 Ext.ux.DWR 13.7.1 Ext.data.DwrProxy 13.7.2 Ext.data.DWRTreeLoader 13.7.4 Web服务端配置 13.7.5 服务层接口 第14章 ExtJS扩展 14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1...
在这个案例中,标签"ajax", "jquery", "dwr", 和 "ext js" 提供了关于所用技术的信息。 1. **Ajax**(异步JavaScript和XML):这是一种网页开发技术,允许页面在不重新加载整个页面的情况下与服务器交换数据并更新...