- 浏览: 81022 次
- 性别:
- 来自: 长沙
最近访客 更多访客>>
文章分类
最新评论
-
easonfans:
试了,不行……
hibernate的错误4 -
javaAlpha:
偶也是刚设置了 ,确实挺方便的。
MyEclipse扩展功能设置(Eclipse代码提示功能扩展) -
xh28025:
8错,学习了
myEclipse打开JSP时老是要等上好几秒原因? -
ybbkvi:
这样做外键不是没用了?
hibernate错误 -
fpplzw:
哎,都是直接复制粘贴的
<script type='te ...
DWR中文文档v0.9 02
第7章. util.js 功能
util.js包含了一些工具函数来帮助你用javascript数据(例如从服务器返回的数据)来更新你的web页面。
你可以在DWR以外使用它,因为它不依赖于DWR的其他部分。你可以下载整个DWR或者单独下载.
4个基本的操作页面的函数:getValue[s]()和setValue[s]()可以操作大部分HTML元素除了table,list和image。getText()可以操作select list。
要修改table可以用addRows()和removeAllRows()。要修改列表(select列表和ul,ol列表)可以用addOptions()和removeAllOptions()。
还有一些其他功能不是DWRUtil的一部分。但它们也很有用,它们可以用来解决一些小问题,但是它们不是对于所有任都通用的。
7.1 $()
$() 函数(它是合法的Javascript名字) 是从Protoype偷来的主意。 大略上的讲: $ = document.getElementById。 因为在Ajax程序中,你会需要写很多这样的语句,所以使用 $() 会更简洁。
通过指定的id来查找当前HTML文档中的元素,如果传递给它多个参数,它会返回找到的元素的数组。所有非String类型的参数会被原封不动的返回。这个函数的灵感来至于prototype库,但是它可以在更多的浏览器上运行。
可以看看DWRUtil.toDescriptiveString的演示。 从技术角度来讲他在IE5.0中是不能使用的,因为它使用了Array.push,尽管如此通常它只是用来同engine.js一起工作。
如果你不想要engine.js并且在IE5.0中使用,那么你最好为Array.push找个替代品。
7.2 addOptions and removeAllOptions
DWR的一个常遇到的任务就是根据选项填充选择列表。下面的例子就是根据输入填充列表。 下面将介绍 DWRUtil.addOptions() 的几种是用方法。 如果你希望在你更新了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有5种模式
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的值,对象属性值用来作为属性的文字,这听上去有些不对。但是事实上却是正确的方式。如果reverse参数被设置为true,那么对象属性值用来作为选项的值。
5.对象的Map: DWRUtil.addOptions(selectid, map, valueprop, textprop) 用map中的每一个对象创建一个option。用对象的valueprop属性做为option的value,用对象的textprop属性做为option的文字。
6. ol 或 ul 列表: DWRUtil.addOptions(ulid, array) 用数组中的元素创建一堆li元素,他们的innerHTML是数组元素中的值。这种模式可以用来创建ul和ol列表。
这是网上的例子
7.3 addRows and removeAllRows
DWR通过这两个函数来帮你操作table: DWRUtil.addRows() 和 DWRUtil.removeAllRows() 。这个函数的第一个参数都是table、tbody、thead、tfoot的id。一般来说最好使用tbody,因为这样可以保持你的header和footer行不变,并且可以防止Internet Explorer的bug。
DWRUtil.removeAllRows()
DWRUtil.removeAllRows(id);
描述: 通过id删除table中所有行。 参数: id: table元素的id(最好是tbody元素的id)
DWRUtil.addRows()
DWRUtil.addRows(id, array, cellfuncs, [options]);
描述: 向指定id的table元素添加行。它使用数组中的每一个元素在table中创建一行。然后用cellfuncs数组中的没有函数创建一个列。单元格是依次用cellfunc根据没有数组中的元素创建出来的。
DWR1.1开始,addRows()也可以用对象做为数据。如果你用一个对象代替一个数组来创建单元格,这个对象会被传递给cell函数。
参数:
id: table元素的id(最好是tbody元素的id)
array: 数组(DWR1.1以后可以是对象),做为更新表格数据。
cellfuncs: 函数数组,从传递过来的行数据中提取单元格数据。
options: 一个包含选项的对象(见下面) 选项包括:
rowCreator: 一个用来创建行的函数(例如,你希望个tr加个css). 默认是返回一个document.createElement("tr") cellCreator: 一个用来创建单元格的函数(例如,用th代替td). 默认返回一个document.createElement("td")
这是网上的例子
7.4 getText
getText(id)和getValue(id)很相似。出了它是为select列表设计的。你可能需要取得显示的文字,而不是当前选项的值。
这是网上的例子
7.5 getValue
DWRUtil.getValue(id)是 setValue()对应的"读版本"。它可以从HTML元素中取出其中的值,而你不用管这个元素是select列表还是一个div。
这个函数能操作大多数HTML元素包括select(去处当前选项的值而不是文字)、input元素(包括textarea)、div和span。
这是网上的例子
7.6 getValues
getValues()和getValue()非常相似,除了输入的是包含name/value对的javascript对象。name是HTML元素的ID,value会被更改为这些ID对象元素的内容。这个函数不会返回对象,它只更改传递给它的值。
从DWR1.1开始getValues()可以传入一个HTML元素(一个DOM对象或者id字符串),然后从它生成一个reply对象。
这是网上的例子
7.7 onReturn
当按下return键时,得到通知。
当表单中有input元素,触发return键会导致表单被提交。当使用Ajax时,这往往不是你想要的。而通常你需要的触发一些Javscript。
不幸的是不同的浏览器处理这个事件的方式不一样。所以DWRUtil.onReturn修复了这个差异。如果你需要一个同表单元素中按回车相同的特性,你可以用这样代码实现:
<input type="text" onkeypress="DWRUtil.onReturn(event,submitFunction)"/> <input type="button" onclick="submitFunction()"/>
你也可以使用onkeypress事件或者onkeydown事件,他们做同样的事情。
一般来说DWR不是一个Javascript类库,所以它应该试图满足这个需求。
不管怎样,这是在使用Ajax过程中一个很有用函数。 这个函数的工作原理是onSubmit()事件只存在于<FORM ...>元素上
这是网上的例子
7.8 selectRange
选择一个输入框中的一定范围的文字。 你可能为了实现类似"Google suggest"类型的功能而需要选择输入框中的一定范围的文字,但是不同浏览器间选择的模型不一样。这DWRUtil函数可以帮你实现。 DWRUtil.selectRange(ele, start, end)
这是网上的例子
7.9 setValue
DWRUtil.setValue(id, value)根据第一个参数中指定的id找到相应元素,并根据第二个参数改变其中的值。 这个函数能操作大多数HTML元素包括select(去处当前选项的值而不是文字)、input元素(包括textarea)、div和span。
这是网上的例子
7.10 setValues
setValues()和setValue()非常相似,除了输入的是包含name/value对的javascript对象。name是HTML元素的ID,value是你想要设置给相应的元素的值。
这是网上的例子
7.11 toDescriptiveString
DWRUtil.toDescriptiveString()函数比默认的toString()更好。第一个参数是要调试的对象,第二个参数是可选的,用来指定内容深入的层次:
0: 单行调试
1: 多行调试,但不深入到子对象。
2: 多行调试,深入到第二层子对象
以此类推。一般调试到第二级是最佳的。 还有第三个参数,定义初始缩进。这个函数不应该被用于调式程序之外,因为以后可能会有变化。
这是网上的例子
7.12 useLoadingMessage
这个方法将来可能被废弃,因为这个实现实在太专断了。为什么是红色,为什么在右上角,等等。唯一的真正答案就是:抄袭GMail。这里的建议是以本页面中的代码为模板,根据你的需求自定义。 你必须在页面加载以后调用这个方法(例如,不要在onload()事件触发之前调用),因为它要创建一个隐藏的div来容纳消息。
最简单的做法时在onload事件中调用DWRUtil.useLoadingMessage,像这样:
<head> <script> function init() { DWRUtil.useLoadingMessage(); } </script> ... </head> <body onload="init();"> ...
可能有些情况下你是不能容易的编辑header和body标签(如果你在使用CMS,这很正常),在这样的情况下你可以这样做:
<script> function init() { DWRUtil.useLoadingMessage(); } if (window.addEventListener) { window.addEventListener("load", init, false); } else if (window.attachEvent) { window.attachEvent("onload", init); } else { window.onload = init; } </script>
下面这些是这个函数的代码,它对于你要实现自己的加载消息很有用。这个函数的主要内容是动态创建一个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");
7.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 [i]; 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); } }
发表评论
-
DWR中文文档v0.9 11
2008-05-06 14:01 1518第10章. 附录 10.1 常见 ... -
DWR中文文档v0.9 10
2008-05-06 13:59 1514第9章. 范例精讲9.1 购物车该文选自于IBM中国 作者: ... -
DWR中文文档v0.9 09
2008-05-06 13:57 1697第8章. DWR进阶8.1 DWR AnnotationsDW ... -
DWR中文文档v0.9 07
2008-05-06 13:54 3417第6章. engine.js 功能engine ... -
DWR中文文档v0.9 06
2008-05-06 13:51 1423第5章. DWR中的JavaScript简 ... -
DWR中文文档v0.9 05
2008-05-06 13:49 3799第4章. 整合4.1 DWR与Servlet有2个Java类你 ... -
DWR中文文档v0.9 04
2008-05-06 13:23 3516第3章. dwr.xml配置3.1 纵览dwr.xml是你用来 ... -
DWR中文文档v0.9 03
2008-05-06 12:26 3618第2章. web.xml配置2.1 主要配置要加入到你的web ... -
DWR中文文档v0.9 02
2008-05-06 12:06 2994第1章. DWR入门 1.1 简介 DWR是一个可以允许你去 ... -
DWR中文文档v0.9 01
2008-05-06 11:46 1662序章 说明我做这样都是DWR中文文档v0.9 .pdf中的转载 ...
相关推荐
《DWR中文文档v0.9PDF》是一个关于Direct Web Remoting (DWR)技术的中文版指南,主要面向希望了解和使用DWR框架的开发者。DWR是一种JavaScript库,它允许Web应用程序与服务器端Java代码进行实时交互,实现AJAX...
### DWR中文文档v0.9 - DWR2.0 版本介绍 #### 前言 随着Ajax技术的兴起和发展,越来越多的开发者希望能够利用这项技术为用户提供更丰富的交互体验。然而,对于许多程序员来说,如何将Ajax与现有的应用程序进行有效...
这个压缩包包含了DWR的中文文档、DWR库的jar文件以及与JavaScript相关的资源,对于理解和使用DWR进行开发非常有帮助。 首先,我们来深入了解一下DWR的核心概念和技术特性: 1. **Reverse Ajax**:DWR的主要功能是...
DWR中文文档和dwr.jar包 DWR中文文档v0.9Ajax向我们袭来的时候,很多写代码的程序员看到了Ajax的发展前景,但并不是每一个程序员都能将页面与代码完美整合在一起,DOM、CSS、javascript让人眼花缭乱,不知从何下手。...
本压缩包包含的是DWR的中文文档,版本为v0.9,适用于DWR 2.0。文档详细介绍了如何将DWR整合到Spring、Struts、JSF等流行的Java Web框架中,这些框架在企业级应用开发中广泛使用。通过集成DWR,开发者可以利用AJAX...
DWR的中文官方文档,以及V0.9的文档一共两份 在网站不容易找到合适的说明.这个包里是整合网站的dwr所有帮助信息下载下来的,因为时间缘故没有及时做成电子文档,希望有时间了在做一份. 如果还是看着不方便建议到...
在DWR中文文档v0.9中,读者可以找到关于如何安装、配置DWR,以及如何在项目中使用DWR的详细步骤。文档可能涵盖以下几个方面: 1. **安装与配置**:介绍如何将DWR添加到Web应用的类路径中,以及如何配置DWR的初始化...
在DWR V0.9版本中,可能包含了对早期版本的改进和修复,比如性能优化、新的API、更好的错误处理机制或者对新浏览器的支持等。通过阅读《DWR中文手册(修正).rar》中的dwrV0.9.pdf文档,开发者可以获得关于如何安装、...
本书《DWR中文文档v0.9DWR2.0》由方佳玮编著,旨在为新手提供从入门到实践的完整指南。书中不仅包含了DWR的基本概念、远程方法调用、用户界面组件介绍,还提供了搭建DWR开发环境的步骤和快速开发实例。 #### 二、...