- 浏览: 1506830 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (595)
- Java咖啡厅 (208)
- IT杂侃 (23)
- 程序员笑话 (7)
- 我的后现代文学 (1)
- WEB编程 (116)
- 软件评测 (8)
- 操作系统 (3)
- 炫目Ruby (2)
- 行业知识 (7)
- 我的动漫情结 (6)
- 其他 (8)
- Window DIY (6)
- 古文学 (3)
- 转载文章 (2)
- IT百科 (7)
- 动态网页Active (1)
- 文档 (1)
- 设计理论 (11)
- .NET 快速开发 (18)
- 英语学习 (6)
- 网站分析 (2)
- 开源软件 (4)
- 数据库 (28)
- 笔记 (4)
- 源代码共享 (8)
- IT人物 (2)
- 软件管理 (10)
- 小说创作 (0)
- 大众软件 (12)
- 网站评论 (3)
- 小虾乱说 (10)
- 游戏 (8)
- 心情 (3)
- 娱乐休闲 (2)
- Delphi编程 (1)
- PHP编程 (4)
- 中间件 (2)
- 移动开发 (2)
- Office应用 (2)
- Photoshop (1)
- Eclipse (5)
- 面试题 (1)
- 手机评测 (0)
- VBScript (1)
- WEB前端-EXT (3)
- 吐槽 (1)
- Java咖啡厅 Ibatis (1)
- javascript Ext (1)
- jquery ui (1)
- require (1)
- WEB编程 Javascript (1)
- jquery (1)
- Swing (1)
- 分布式 (1)
最新评论
-
zhangjihao:
28. 下面哪个Set是排序的? A. LinkedHas ...
Java面试题(选择题) -
zhangthe9:
ICMP报文被封装在IP包里,也就是说他是由IP协议承载的,从 ...
Java面试题(选择题) -
zhunengfei:
真的假的?
自已写的jquery ui框架 -
white_crucifix:
少年,发烫是所有智能手机的特点,而莫名发烫是所有安卓手机的特点 ...
【吐槽】三星手机的OS是一砣屎 -
suzu88:
试了一下,可以用。如果美化一下控件和窗体更有意思。
一个用XML构建Swing视图的框架
目录结构:
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>
显示结果:
发表评论
-
AJAX
2019-06-12 22:41 871Ajax 全名为Asynchronous Javas ... -
Webpack入门配置
2019-01-05 15:33 3193Webpack是一个强大前端集成工具,它在Nodejs的基础 ... -
解决Jetty做Web容器时,修改JS或HTML出错的问题
2018-07-03 18:28 1074解决的方法 1. 进入jetty的安装目录 ... -
用JQuery做的一个分页效果
2018-05-28 02:29 2328这个效果主要使用jquery来实现, 每次显示 ... -
Vue自已写的日历插件
2018-05-07 12:36 6415自已写的日历插件,还在优化中,后续会陆续更新。 ... -
无刷新上传文件的方法
2018-04-15 00:05 827这里使用jquery.form.js的方法 1. ... -
zrender学习点滴
2018-01-21 20:37 1809Zrender是一个二维绘图引擎,它提供了Canvas,S ... -
原创程序- Web版数据库管理
2017-11-15 00:39 1177这是我自已写的Web版的数据库管理工具,主要是依赖于JDBC ... -
Vue学习点滴
2017-09-23 22:11 7361. 循环 v-for="(item, ... -
Eclipse创建Web项目
2017-07-29 10:53 7751. 打开创建Web项目的对话框 2 ... -
HTML5 新增功能收集
2017-04-29 03:18 658HTML 5是HTML发展以来最大的一次变革,相比其 ... -
Bootstrap学习记录点滴
2017-04-28 00:56 9121. 学习Bootstrap必进的学习网站 ... -
关于地图显示的一些知识
2017-02-18 23:34 9221. 墨卡托(Mercator)投影 墨卡 ... -
CSS知识记录点滴
2017-02-05 11:06 5951. 元素无法选择 -webkit-u ... -
用JS制作3D效果布局
2016-12-04 22:18 25这是用JS做的一个3D布局效果的程序, 目前还是研究 ... -
tntxiawebmvc 做国家管理的系统
2016-11-19 18:21 8641. 首先我们先增加一个Web项目 如图:我们在左 ... -
jtopo学习记录
2016-11-13 13:34 15281. 通过JSON的格式来创建结点: $(funct ... -
Html 5 Canvas 学习记录
2016-11-13 10:28 5831. stroke beginPath endPat ... -
jquery杂记
2016-08-11 19:11 6911. $ 的作用 $ 在jquery里面有两 ... -
自已写的jquery ui框架
2016-03-08 23:53 1545这个是自已写的一个jquery ui的插件,目的是 ...
相关推荐
结合DWRProxy和DWRTreeLoader,你可以实现一个完全动态的、基于DWR的ExtJS树形视图。例如,当用户展开树的一个节点时,DWRTreeLoader会自动调用DWR服务获取子节点数据,然后通过DWRProxy将结果返回给客户端,更新树...
用的东西比较杂,主要为了学习一下知识呵呵: ssh2、dwr、jquery、extjs、jquery weekcalendar、jfreechart、jasperreport 联系人实现了拖动实现好友分组。可以把grid直接拖到tree,不同于其他的例子,拖动grid后会...
ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...
总之,EXTJS与DWR的结合是构建富客户端Web应用的一种高效方式,通过这种结合,开发者可以在保持前端用户体验的同时,充分利用Java的强大功能和灵活性。掌握这两者的集成技术,对于提升Web应用的交互性和响应速度至关...
在ExtJS应用中,DWR作为桥梁,帮助我们处理与服务器端的数据通信,使得动态更新、数据检索变得简单。 XML,全称可扩展标记语言(eXtensible Markup Language),是用于传输和存储数据的一种标准格式。在Web开发中,...
- **数据绑定**: 使用DWR获取的数据直接填充到ExtJS的Grid、Tree等组件,实现数据的实时刷新。 ### 5. 示例代码 ```java // 服务器端Java接口 public interface MyService { List<String> getNames(); } // ...
ExtJS与DWR的结合可以进一步增强Web应用的实时性和交互性。 ##### 2.1 在Grid中使用DWR获取后台数据 在ExtJS的Grid控件中,可以利用DWR技术直接从服务器获取数据并填充网格。这涉及到创建一个DWR代理,该代理暴露...
【DWRExt Tree】是一种基于Web的用户界面技术,它结合了DWR(Direct Web Remoting)和ExtJS库来创建交互式的树形组件。在本文中,我们将深入探讨这两个技术以及它们如何协同工作,创建出动态且功能丰富的树结构。 ...
同时,ExtJS中的menu、tree、window等组件以及事件机制也是实现动态树的关键。 在实际项目中,动态树的实现可能还需要考虑到数据的存储结构,如导航数据表,以及页面的布局和源码组织。为了创建一个完整的动态树...
Extjs的`JsonReader`会解析这个响应,将数据绑定到Grid、Tree或其他组件中。 例如,在给出的部分内容中,我们可以看到一个使用`Ext.data.GroupingStore`的例子,它通过`HttpProxy`与服务器进行通信,配置了`url`...
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、dwr、jquery、extjs、jquery weekcalendar、jfreechart、jasperreport 联系人实现了拖动实现好友分组。可以把grid直接拖到tree,不同于其他的例子,拖动grid后会在...
1. **SSH+jQuery+DWR+EasyUI 实战**:本文档通过一系列的实战案例展示了如何将 Struts2、Spring3、Hibernate4 与 DWR、jquery2.x 和 easyUI1.3.x 结合起来开发实际的应用。 2. **实战案例详解**: - SSH 架构集成...
10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1 折叠布局——AccordionLayout 11.1.2 边框布局——BorderLayout 11.1.3 卡片式布局——CardLayout 11.1.4 ...
在Web应用程序开发中,ExtJS和Direct Web Remoting (DWR)是两种常见的技术,用于构建富客户端界面和实现服务器端交互。标题中的"dwrtproxy"和"dwrproxy.js"指的是DWR中的一个关键组件——DWR Proxy,而...
ExtJS 是一款强大的JavaScript库,主要用于构建富客户端的Web应用程序,尤其在数据可视化和用户界面交互方面表现出色。其中,Ext2.0是该库的一个早期版本,它提供了丰富的组件和功能,包括我们今天要讨论的“动态树...
用的东西比较杂,主要为了学习一下知识呵呵: ssh2、dwr、jquery、extjs、jquery weekcalendar、jfreechart、jasperreport 联系人实现了拖动实现好友分组。可以把grid直接拖到tree,不同于其他的例子,拖动grid后会在...
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....