IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere | Web development  >

在 Portlet Factory 中使用 Ajax 技术

WebSphere Portlet Factory 6.0.1 中 AJAX 新技术简介

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码


级别: 中级

郭 庆 (qingguo@cn.ibm.com), 软件工程师, IBM
戴 丽 (daili@cn.ibm.com), 高级软件工程师, IBM 

2007 年 10 月 11 日

在 2007 年 3 月发布的 WebShere Portlet Factory 6.0.1 中,增添了大量与 AJAX 技术相关的构建器。本文将结合一些例子,对这些构建器进行系统地介绍,帮助用户尽快掌握这些构建器的使用。

Ajax(Asyncronous javascript and XML),作为 Web 2.0 的重要组成部分,意味着更强的用户交互和更漂亮的界面。在今年 3 月发布的 WebSphere Portlet Factory 6.0.1 中,增加了对 Ajax 技术的支持,有大量与 Ajax 相关的构建器添加到产品中。他们主要分为三类:一类是在原有构建器的基础上增加了 Ajax 页面更新选项,比如按钮构建器;另一类是在更高层次上对页面更新进行控制的构建器 - Ajax 区域构建器;还有一类是利用现有 Ajax 功能的构建器,比如 Ajax 预输入构建器等。在下面的文章里我们将对这三大类构建器结合例子进行详细地介绍。所用到的例子在附件的 Zip 文件里,用户需要把这个包导入到已有的 Portlet Factory 项目中。

页面动作构建器: 按钮,链接,Html事件操作

请访问 Ajax 技术资源中心,这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。

RSS 订阅 Ajax 相关文章和教程的 RSS 提要

这三个构建器的输入界面都新增加了一个部分 操作后行为 :


图 1. 操作后行为用户输入界面
操作后行为用户输入界面

用户可以通过这部分来实现页面动作后的指定范围内的页面更新,而不是整个页面的更新。 在附件的例子中提供了一个模型 - ButtonWIthPartialRefresh.model。 这个模型的HTML页面结构如代码1所示。


代码 1. ButtonWIthPartialRefresh的页面HTML
                
<html>
	<head><title>Button With Partial Refresh</title></head>
	<body>
		<div align="center">
			<div style="font:12pt Arial;font-weight: bold;color: #336699;">
			Page Init Time: <%= new java.util.Date() %>
			</div>
			<br>
			<span name="refresh"><%= new java.util.Date()%></span>
			<span name="button"></span>
		</div>
	</body>
</html>
      

我们在button处添加一个按钮构建器,然后在按钮构建器的操作后行为中指定了更新的区域为该页面上的refresh位置。 运行这个模型,我们能看到一个简单的界面,显示了页面第一次加载时的时间,和更新的时间(点击Refresh按钮的时间)。 当点击Refresh按钮时,只有更新时间发生了变化。如图2所示。


图 2. ButtonWIthPartialRefresh模型运行时界面
ButtonWIthPartialRefresh模型运行时界面




回页首


Ajax区域构建器

Ajax区域构建器简介

Ajax区域构建器能够重写已有页面中某个指定区域的所有操作,包括链接、按钮的操作等,使这些操作成为Ajax操作,从而以异步方式来重新装入指定的刷新区域。 使用Ajax区域构建器,用户可以方便的给已有的界面添加Ajax效果。 Ajax区域构建器可以将模型的所有页面、某个页面、或某个页面上某个位置指定为Ajax区域,那么在这个区域里的所有操作将以异步方式来局部刷新指定位置。如图3所示。


图 3. Ajax区域构建器
Ajax区域构建器

当用户选择页面上某个位置的时候,新的输入会出现供用户进行选择。如图4所示。


图 4. 选择“页面某个位置”时Ajax区域构建器的输入
 选择“页面某个位置”时Ajax区域构建器的输入

图4中Ajax区域构建器的几个输入的含义为:

  • 刷新位置:指定此构建器调用将处理的页面区域。
  • 使用触发器区域:选中此输入可以指定独立于刷新位置的区域,在此区域中通过重写所有操作来以异步方式重新装入刷新位置。如果未选中此输入,则将重写刷新区域中的所有操作。
  • 触发器位置:指定一个区域,在此区域中通过重写所有操作来重新装入刷新区域。此输入仅在选中使用触发器区域的情况下显示。
  • 刷新触发器区域:选中此输入可以将触发器区域添加到刷新位置。这会导致每次选中触发器区域中的一个操作,就刷新一次该区域中的输出。如果除构建操作之外,触发器区域还包含显示状态信息的构建器,例如页面调度按钮构建器,这一点将十分有用。

页面动作构建器 vs. Ajax区域构建器

虽然页面动作构建器和Ajax区域构建器都提供了局部刷新的功能,但是使用他们的时候需要根据情况进行选择。表1在效率,灵活性等方面对两者在局部刷新方面进行了比较。
表 1. 页面动作构建器和Ajax区域构建器的在局部刷新方面的比较
#Ajax区域构建器页面动作构建器
效率中、低
灵活性
刷新区域的尺寸较大擅长较小的区域,在一个页面上可以处理多个区域
刷新(触发)区域内的操作自动转化为局部刷新的操作需要额外操作或实现
刷新(触发)区域内的脚本会被执行不会被执行
刷新(触发)的区域能否包含另一个的构建器可以包含页面动作构建器不能包含区域Ajax区域构建器
使用的Ajax技术IFrameXmlHttpRequest
能否后退到上一个页面如果两个页面的URL不同则可以,否则不行不能




回页首


其他应用Ajax技术的构建器

除了上面介绍的两种构建器之外,WebShere Portlet Factory 6.0.1还提供了一些其他应用Ajax技术的构建器,这些构建器有些可以用来实现局部更新,例如定时操作构建器,有些用来实现异步通信,例如动态验证构建器等。 下面我们将介绍一些常用的Ajax相关构建器。

定时操作构建器

定时操作构建器可以定时或周期性的执行某个特定的操作。而且,类似于页面动作构建器,它提供了操作后行为的用户输入。 结合这种嵌入的局部刷新功能,用户可以定时或周期性的刷新页面的特定区域。 这个构建器可以应用到多种用例中,例如动态刷新页面数据,定时提交表单保存用户编辑数据等。

在附件的例子中有另外一个模型 - TimedActionSample.model,这个模型演示的是周期性局部刷新页面数据。 它的HTML页面结构如代码2所示。


代码 2. TimedActionSample的页面HTML
                
<html>
	<head><title>Button With Partial Refresh</title></head>
	<body>
		<div align="center">
			<div style="font:12pt Arial;font-weight: bold;color: #336699;">
			Page Init Time: <%= new java.util.Date() %>
			</div>
			<br>
			<span name="refresh">Current Time is: <%= new java.util.Date()%></span>
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
		</div>
	</body>
</html>
      

运行这个模型我们可以发现,页面初始时间不变,而更新时间每秒中都在变化。这是因为我们在定时操作构建器中指定操作周期为1秒,而且指定了局部刷新。


图 5. 定时操作构建器输入示例
定时操作构建器输入示例

动态验证构建器

动态验证构建器可以使客户端不断的跟服务器端进行验证。当用户在填写表单时,它可以调用服务器端的代码来验证用户输入的数据,如果有错误,则会立即显示出错误消息。 这个构建器可以使用任何HTML事件作为触发器来调用验证代码。一般来说,我们比较推荐用户使用其输入界面下拉列表的事件。如图6所示。在附件中, 我们提供了一个使用动态验证构建器的示例 - DynamicValidationSample.model,运行这个模型我们可以看到,当用户输入时,动态验证构建器会动态提交数据进行验证, 当验证失败时,错误信息会及时的显示在输入框的右侧。


图 6. 动态验证构建器输入示例
动态验证构建器输入示例

Ajax预输入构建器

这个构建器可以用来自动生成建议选择列表。当用户在某个输入框输入字符时,它会判断并根据用户当前输入弹出选择列表,列出用户可能需要的选项或与用户输入相关的正确的选项。 一方面它可以用来减少用户输入;另一方面提醒用户当前的输入可能并不正确,因为系统没有找到相应的数据。 我们可以把这个构建器应用于很多用例中,比较常见的是把不同用户对同一输入框的输入(或同一用户对同一输入框的多次输入)保存下来, 当下一次用户输入时,把以往的输入作为弹出列表的集合,根据用户当前的输入来过滤出可能满足用户的选项。

在附件中,我们提供了一个使用Ajax预输入构建器的示例 - SendMailToAuthors.model,当用户输入本文作者的邮箱地址时,会有弹出列表提示作者的正确邮箱地址。点击OK按钮, 将会使用默认邮件程序创建一个给指定邮箱地址的新邮件。如图7所示。


图 7. 使用Ajax预输入构建器来得到用户可能需要键入的邮箱地址
使用Ajax预输入构建器来得到用户可能需要键入的邮箱地址




回页首


结束语

WebSphere Portlet Factory在其6.0.1版本中提供了很多应用了Ajax功能的构建器。这些构建器提供了当前常见的Ajax页面技术,包括局部刷新,定时操作,动态验证,预输入判断等等诸多功能。 开发人员可以根据用户需要选择适当的构建器来快速实现应用Ajax技术的页面,从而改善和提高最终用户的体验。同时,这些构建器的应用是增量式的,多数情况下用户不需要更改已有的模型,这也为向已有的模型添加Ajax技术提供了便利。






回页首


下载

描述名字大小下载方法
本文用到的示例代码ajax_in_pf.zip11KBHTTP
关于下载方法的信息


参考资料

学习

讨论


作者简介

郭庆

郭庆现在在IBM CSDL的ActiveInsight组做开发工作,负责在WebSphere Portlet Factory的基础上进行WebSphere Dashboard Framework的开发。他对WebSphere Portlet Factory的Ajax相关功能非常感兴趣并有深入了解。


戴 丽

戴丽在CDL从事软件产品开发,对Websphere Portlet Facotry 和 Websphere Dashboard Framework有丰富的使用经验。对Web 2.0 技术有浓厚兴趣。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款