您所在的位置: 首页 > 读书频道 > 设计开发 > .Net系列 >

4.4 DWR(3)

http://book.51cto.com  2008-09-28 16:34  (英)格雷恩(Granc,D.)等著/贺师俊等译  人民邮电出版社  我要评论(0)
  • 摘要:《Ajax实战:实例详解》第4章Ajax开源工具集,讨论支持Ajax的JavaScript库并进一步讲解Prototype、Dojo工具箱、jQuery和DWR库,另外特别介绍了它们给Ajax带来的变化。本小节为大家介绍的是DWR。
  • 标签:Ajax  实例详解  DWR  Ajax实战:实例详解

4.4  DWR(3)

这个页面显示了所有映射后的类。点击CustomerFactory链接来显示一些关于这个类的有用信息,就像图4-7展示的那样。

 
(点击查看大图)图4-7  DWR测试页面显示:类信息

这个页面不仅显示了为了使用这个类而应该包含的<script>元素,还显示了已经声明的方法,甚至还允许我们用简单的数据来测试它们。在开发期间,这种特性的作用是不言而喻的。

如果观察一下<script>元素的URL,会发现即使它们看起来像是JavaScript文件的引用,但实际上它们是在web.xml中声明的DWR servlet的调用。.js文件并不真正存在于文件系统中,而是通过引用由DWR servlet动态生成。

如果我们点击CustomerFactory.js文件的那个链接,那么就会看到图4-8所显示的那样,也就是为映射类中的方法所创建的本地存根。

(点击查看大图)图4-8  DWR动态生成JS纯根
那么,现在已经准备好要真正编写页面了。剪切并粘贴图4-7显示的来自DWR生成的那个页面上的script元素,把它门加入到页面的<head>元素中:
 
用于捕获客户数据的表单的编码如下:
 
表单非常简单明了(尽管在没有样式的情况下,很丑),除了要把lookupByName()函数的调用设置为firstName和lastName字段的onblur事件句柄。
 

在这个处理函数里,传递表单 ,并检查firstName和lastName是否已经全部填入。是的话,远端findByName()方法的存根就会被调用 。

注意,这个存根很像远端方法,但是并不完全一样。首先,调用是异步的,因此这个函数并没有返回值。其次,方法的签名中加入了一个额外的参数来指定在异步调用结束后需要调用的回调函数。其中,将把远端方法的返回值作为这个函数单独的参数传递进去。

回调函数的代码如下:

 

调用回调函数将得到远端方法的返回值。我们简单地对其进行检查以保证它不会是null(回忆一下,当客户并不能唯一被识别时,远端方法将返回null)。如果不是null,那么我们用传递过来的对象的值来填充表单。

DWR已经汇集了来自Customer类的数据,并创建一个拥有同在Customer类中定义的每个JavaBean属性一致的JavaScript对象。在浏览器中,浏览这个示例,并输入客户的名字,结果显示在图4-9中。代码清单4-8列出了完成后的整个页面。

图4-9  Bill Moody的页面

代码清单4-8  用DWR进行远程调用

 
 

3.讨论

本节使我们领略了DWR工具集的少部分能力。与其他看过的Ajax工具集不同,DWR抽象了请求响应周期,而提供了一个类RPC的方法来调用服务器上的Java函数。

虽然我们的示例很简单,但也能预想到针对各种客户端任务,如何来使用这样的能力,而并不仅限于数据的查询。想象一下,例如,当执行由服务器端提供的字段数据验证时,这些能力的价值。

显然,DWR仅仅只是对支持servlet引擎的Java Web引用起作用。使用其他服务器端机制的开发者或页面设计者只能使用坚持传统请求响应周期的工具集。


【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
上一篇: 4.4 DWR(2) 下一篇: 4.5 总结
解析Ajax开发框架 走进Ajax开发应用
Ajax明天会HOT还是OVER?
微软的Ajax:Atlas(ASP.net AJAX)
AJAX 51CTO技术座谈会
Ajax的应用开发
 
 验证码: (点击刷新验证码)   匿名发表
  • 互联网时代的软件革命—SaaS架构设计

  • 作者:叶伟等著
  • 本书是国内第一本完整介绍SaaS应用开发的书籍,聚集于架构设计。内容是互联网领域具有丰富实践经验的8位一线架构师,对于多年Sa..
Copyright©2005-2008 51CTO.COM 版权所有