- 浏览: 891044 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
八.util.js的功能:主要操作js对象DWRUtil来操作通过js调用java对象后返回的数据,填充到HTML页面等作用。
**功能:util.js包含了一些工具函数来帮助你用javascript数据(例如从服务器返回的数据)来更新你的web页面
你可以在DWR以外使用它,因为它不依赖于DWR的其他部分。
**功能概要:getValue[s]()和setValue[s]()可以操作大部分HTML元素除了table,list和image。
getText()可以操作select和list。
要修改table可以用addRows()和removeAllRows()。
要修改列表(select列表和ul,ol列表)可以用addOptions()和removeAllOptions()。
(1)$()函数(它是合法的Javascript名字) 是从Protoype偷来的命名方式。
**说明:$ 相当与js中的 document.getElementById,即$() <==> document.getElementById(),
传入HTML标签的id值即可找到对应的DOM节点对象,
注意这和JQuery有点区别,JQuery是通过$("#id"),传入的值要加"#"才能找到对应id的HTML标签对象,
而DWR的$()则不需要,这与ProtoType库手法一样
**注意:如果传递给它多个参数,它会返回找到的元素的数组。所有非String类型的参数会被原封不动的返回。
(2)addOptions和removeAllOptions方法:DWR的一个常遇到的任务就是根据选项填充选择列表<select>
例子:如果你希望在你更新了select以后,它仍然保持原来的选择,可以像下面这样
var sel = DWRUtil.getValue(id);
DWRUtil.removeAllOptions(id);
DWRUtil.addOptions(id, ...);
DWRUtil.setValue(id, sel);
//如果想加一个初始"Please select..." 选项那么你可以直接加入下面的语句:
DWRUtil.addOptions(id, \["Please select ..."]);
**DWRUtil.addOptions有6种模式:
<1>数组:DWRUtil.addOptions(selectId, array)会创建一堆option,每个option的文字和值都是数组元素中的值。
<2>对象数组(指定text):
DWRUtil.addOptions(selectId,data,prop)用每个数组元素创造一个option,
option的值和文字都是在prop中指定的对象的属性。
<3>对象数组(指定text和value值):
DWRUtil.addOptions(selectId,array,valueprop,textprop)用每个数组元素创造一个option,
option的值是对象的valueprop属性,option的文字是对象的textprop属性。
<4>对象: DWRUtil.addOptions(selectId,map,reverse)用每个属性创建一个option,
对象属性名用来作为option的值,对象属性值用来作为option的文字,这听上去有些不对。
但是事实上却是正确的方式。如果reverse参数被设置为true,那么对象属性值用来作为选项的值。
<5>对象的Map: DWRUtil.addOptions(selectId,map,valueprop,textprop)用map中的每一个对象创建一个option,
用对象的valueprop属性做为option的值,用对象的textprop属性做为option的文字。
<6>ol 或 ul 列表:
DWRUtil.addOptions(ulId,array)用数组中的元素创建一堆li元素,
他们的innerHTML是数组元素中的值。这种模式可以用来创建ul和ol列表。
(3)addRows和removeAllRows方法(用得时候查看文档):
DWR通过这两个函数来帮操作<table>,函数的第一个参数可以是table、tbody、thead、tfoot的id。
一般来说<table>最好使用tbody,因为这样可以保持你的header和footer行不变,
并且可以防止Internet Explorer的bug。
<1>DWRUtil.removeAllRows()方法:通过id删除table中所有行。id指的是table元素的id(最好是tbody元素的id)
**格式:DWRUtil.removeAllRows(id);
<2>DWRUtil.addRows()方法:先看格式、参数,然后看功能说明
**格式:DWRUtil.addRows(id, array, cellfuncs, [options]);
**参数说明:
id: table元素的id(最好是tbody元素的id)
array: 数组(可以是对象),做为更新表格的数据。
cellfuncs: 函数数组,从传递过来的行数据中提取单元格数据。
options: 一个包含选项的对象(见下面)
选项包括:
rowCreator: 一个用来创建行的函数(例如,你希望的tr和css).
默认是返回一个document.createElement("tr")
cellCreator: 一个用来创建单元格的函数(例如,用th代替td).
默认返回一个document.createElement("td")
**说明:向指定id的table元素添加行。它使用数组中的每一个元素在table中创建一行。
然后用cellfuncs数组中的每个函数创建一个列。
单元格是依次用cellfunc根据每个数组中的元素创建出来的。
(4)getText方法:getText(id)和getValue(id)很相似。是为select列表设计的,你可能需要取得显示的文字,而不是当前选项的值。
(5)getValue方法:DWRUtil.getValue(id)是setValue()对应的"读版本"。
它可以从HTML元素中取出其中的值,而你不用管这个元素是select列表还是一个div
**使用范围:这个函数能操作大多数HTML元素包括select(取出当前选项的值而不是文字)、input元素(包括textarea)、div和span。
(6)getValues方法:getValues()和getValue()非常相似,除了输入的是包含name/value对的javascript对象。
name是HTML元素的ID,value会被更改为这些ID对象元素的内容。这个函数不会返回对象,它只更改传递给它的值。
也可以传入一个HTML元素(一个DOM对象或者id字符串),然后从它生成一个reply对象。
(7)onReturn方法:可以通过调用DWRUtil.onReturn()方法,来调用Form中表单提交的方法。
例子: 当点击普通文本框的时候会触发调用时间submitFunction()函数,这和按钮做同样的事就是提交表单。
<input type="text" onkeypress="DWRUtil.onReturn(event,submitFunction)"/>
<input type="button" onclick="submitFunction()"/>
(8)selectRange方法(了解):选择一个输入框中的一定范围的文字。
你可能为了实现类似"Google suggest"类型的功能而需要选择输入框中的一定范围的文字,
但是不同浏览器间选择的模型不一样。这DWRUtil函数可以帮你实现。
**格式:DWRUtil.selectRange(ele, start, end)
(9)setValue方法:DWRUtil.setValue(id, value)根据第一个参数中指定的id找到相应元素,
并根据第二个参数改变其中的值。
这个函数能操作大多数HTML元素包括select、input元素(包括textarea)、div和span。
<10>setValues方法:setValues()和setValue()非常相似,除了输入的是包含name/value对的javascript对象。
name是HTML元素的ID,value是你想要设置给相应的元素的值。
例如:类似于传入对象{ name:"lijie", age:"23"}这样包含有值对的对象,其中属性名为Id
<11>toDescriptiveString方法(了解):
DWRUtil.toDescriptiveString()函数比默认的toString()更好。
第一个参数是要调试的对象,第二个参数是可选的,用来指定内容深入的层次:
**参数值:
0: 单行调试
1: 多行调试,但不深入到子对象。
2: 多行调试,深入到第二层子对象
以此类推。一般调试到第二级是最佳的。
还有第三个参数,定义初始缩进。这个函数不应该被用于调式程序之外,因为以后可能会有变化。
<12>useLoadingMessage方法(了解):
这个方法将来可能被废弃,因为这个实现实在太专断了。
你必须在页面加载以后调用这个方法(例如,不要在onload()事件触发之前调用),
因为它要创建一个隐藏的div来容纳消息。
**使用方式:可以自定义这个方法然后使用自己定义的这个方法。
最简单的做法时在onload事件中调用DWRUtil.useLoadingMessage
例子:
A.调用
<head>
<script>
function init() {
DWRUtil.useLoadingMessage();
}
</script>
</head>
<body onload="init();">
</body>
B.实现自己的useLoadingMessage方法:
下面这些是这个函数的代码,它对于你要实现自己的加载消息很有用。
这个函数的主要内容是动态创建一个div(id是disabledZone)来容纳消息。
重要的代码是当远程调用时使它显示和隐藏:
DWREngine.setPreHook(function() {
$('disabledZone').style.visibility = 'visible'; }
);
DWREngine.setPostHook(function() {
$('disabledZone').style.visibility = 'hidden'; }
);
//This is fairly simple and makes it quite easy to implement your own "loading" message.
function useLoadingMessage(message) {
var loadingMessage;
if (message) loadingMessage = message;
else loadingMessage = "Loading";
DWREngine.setPreHook(function() {
var disabledZone = $('disabledZone');
if (!disabledZone) {
disabledZone = document.createElement('div');
disabledZone.setAttribute('id', 'disabledZone');
disabledZone.style.position = "absolute";
disabledZone.style.zIndex = "1000";
disabledZone.style.left = "0px";
disabledZone.style.top = "0px";
disabledZone.style.width = "100%";
disabledZone.style.height = "100%";
document.body.appendChild(disabledZone);
var messageZone = document.createElement('div');
messageZone.setAttribute('id', 'messageZone');
messageZone.style.position = "absolute";
messageZone.style.top = "0px";
messageZone.style.right = "0px";
messageZone.style.background = "red";
messageZone.style.color = "white";
messageZone.style.fontFamily = "Arial,Helvetica,sans-serif";
messageZone.style.padding = "4px";
disabledZone.appendChild(messageZone);
var text = document.createTextNode(loadingMessage);
messageZone.appendChild(text);
}
else {
$('messageZone').innerHTML = loadingMessage;
disabledZone.style.visibility = 'visible'; }
}
);
DWREngine.setPostHook(function() {
$('disabledZone').style.visibility = 'hidden'; }
);
}
//下面的做法能简单的使用有加载消息图片:
function useLoadingImage(imageSrc) {
var loadingImage;
if (imageSrc) loadingImage = imageSrc;
else loadingImage = "ajax-loader.gif";
DWREngine.setPreHook(function() {
var disabledImageZone = $('disabledImageZone');
if (!disabledImageZone) {
disabledImageZone = document.createElement('div');
disabledImageZone.setAttribute('id', 'disabledImageZone');
disabledImageZone.style.position = "absolute";
disabledImageZone.style.zIndex = "1000";
disabledImageZone.style.left = "0px";
disabledImageZone.style.top = "0px";
disabledImageZone.style.width = "100%";
disabledImageZone.style.height = "100%";
var imageZone = document.createElement('img');
imageZone.setAttribute('id','imageZone');
imageZone.setAttribute('src',imageSrc);
imageZone.style.position = "absolute";
imageZone.style.top = "0px";
imageZone.style.right = "0px";
disabledImageZone.appendChild(imageZone);
document.body.appendChild(disabledImageZone);
}
else {
$('imageZone').src = imageSrc;
disabledImageZone.style.visibility = 'visible';
}
});
DWREngine.setPostHook(function() {
$('disabledImageZone').style.visibility = 'hidden';
});
}
//然后你就可以这样使用:useLoadingImage("images/loader.gif");
<13>Submission box功能(了解):
h1 非util.js中的功能 这里有一些功能不适合加入到DWRUtil中。
它们在解决一些特殊问题上是很有用,但是他们还不够通用以适用任何场合
例子:修补浏览器事件,如果你创建了一个DOM元素,然后用addAttribute在这个元素上创建了一个事件,
那么他们不能被正常的触发。你可以使用下面的脚本来遍历一个DOM树,并重新为他们绑定事件,
这样他们就能正常的触发了。
//把'click'改成你希望的事件
DWREngine._fixExplorerEvents = function(obj) {
for (var i = 0; i < obj.childNodes.length; i++) {
var childObj = obj.childNodes ;
if (childObj.nodeValue == null) {
var onclickHandler = childObj.getAttribute('onclick');
if (onclickHandler != null) { childObj.removeAttribute('onclick');
// If using prototype:
// Event.observe(childObj, 'click', new Function(onclickHandler));
// Otherwise (but watch out for memory leaks):
if (element.attachEvent) {
element.attachEvent("onclick", onclickHandler);
}
else {
element.addEventListener("click", onclickHandler, useCapture);
}
}
DWREngine._fixExplorerEvents(childObj);
}
}
}
本文来自CSDN博客:http://blog.csdn.net/lijie1051/archive/2009/12/18/5034992.aspx
发表评论
-
DWR学习笔记(五)
2011-03-03 15:50 1051六.DWR中的JavaScript简介 ... -
DWR学习笔记(四)
2011-03-03 15:49 1484五.DWR的整合(Servlet、Spring、Jsf、Str ... -
DWR学习笔记(三)
2011-03-03 15:49 1140四.DWR配置文件dwr.xml文 ... -
DWR学习笔记(一)
2011-03-03 15:48 1194一.DWR简介 1.DWR是一个可以允许你去创建AJAX ... -
DWR学习笔记(二)
2011-03-03 15:47 1049三.DwrServlet注册到web.xml后,可以通过< ... -
DWR学习笔记(六)
2010-12-14 21:19 1209七.engine.js的功能:engine.js对DWR非常重 ...
相关推荐
【标题】:“DWR学习笔记-HelloWorld篇” 在IT领域,DWR(Direct Web Remoting)是一个开源的Java框架,它允许JavaScript在浏览器端直接调用服务器端的Java方法,实现了网页与服务器的实时交互,类似于Ajax技术,但...
### dwr学习笔记pdf文件知识点概述 #### 一、DWR框架简介 - **DWR**(Direct Web Remoting)是由GetAhead公司开发的一款用于实现Ajax应用的框架。该框架的核心价值在于允许客户端JavaScript直接调用服务器端Java类...
首先,"DWR学习笔记"提供了对DWR基础概念、核心功能以及实际应用的概述。这些笔记可能包含了DWR的基本架构,如它如何通过AJAX技术实现实时的Web交互,以及如何创建和调用服务器端的Java方法。 "DWR中文API"是DWR库...
- 学习曲线:对于新手,DWR的学习曲线可能相对较陡。 - 不适用于大型项目:在复杂项目中,DWR的维护和扩展可能变得困难。 - 更新不频繁:相比其他现代框架,DWR的更新和维护不够活跃。 ### 6. DWR与其他Ajax框架...
在“DWR学习笔记及经验总结”中,我们可以期待找到以下关键知识点: 1. **DWR的基本概念**:了解DWR的核心理念,包括远程方法调用(Remote Method Invocation)、反向Ajax以及它如何通过JSON或XML格式传递数据。 2...
### dwr学习笔记和总结 #### 一、DWR简介 DWR (Direct Web Remoting) 是一个简化Ajax开发的框架,它使得JavaScript能够直接调用服务器端的Java方法成为可能,无需编写复杂的Ajax代码。这极大地提高了开发效率,并...
### DWR学习笔记 #### 一、DWR简介 DWR(Direct Web Remoting)是一种开源框架,专门设计用于简化Web页面与Java类之间的交互。它通过提供一种新的方法来实现Ajax技术,使得浏览器中的JavaScript代码能够如同在本地...
**DWR(Direct Web Remoting)**是一种JavaScript库,它允许Web...通过深入学习和实践"DWR学习笔记和与spring整合练习",开发者可以掌握DWR的精髓,熟练运用其与Spring的整合,打造出高效、安全、易维护的Web应用程序。
【DWR】全称为Direct Web Remoting,是一个开源的Java库,主要用于帮助开发者构建包含AJAX技术的Web应用。DWR的核心功能在于使得JavaScript能够直接调用服务器端的Java方法,仿佛这些方法就运行在浏览器内部。这为...
阅读"DWR学习笔记.doc"文件将有助于系统地掌握这些知识点,通过实践操作加深理解,从而更好地利用DWR构建交互性强、用户体验良好的Web应用。在学习过程中,结合源码分析可以更深入地理解DWR的工作机制,提升自己的...
1. **官方文档**:DWR的官方文档详细介绍了如何配置、使用以及扩展DWR,是学习的好资料。 2. **示例代码**:实践是最好的老师,通过分析和运行提供的jar文件中的示例代码,能更深入理解DWR的工作原理。 3. **社区...
【DWR(Direct Web Remoting)】是一种开源的Java库,专为开发包含AJAX技术的网站而设计。DWR的核心功能是使浏览器中的JavaScript...DWR的简单接口和强大的功能使其成为AJAX开发的有力工具,特别适合初学者学习和使用。
DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0学习笔记.txt DWR3.0学习网址.txt dwr分页.doc DWR分页代码.doc DWR中文文档.doc DWR中文文档.pdf dwr做comet的完整实现.doc Spring整合DWR comet ...
DWR使用笔记.chm:这可能是一份详细的DWR使用手册,包含了如何集成DWR到项目中、配置DWR引擎、创建远程接口以及处理各种交互的实例。通过阅读这份笔记,你可以了解到DWR的基本概念、配置步骤以及实际应用技巧。 dwr...
技术分享:DWR实战学习笔记