AJAX设计策略(七)

来源:互联网 发布:淘宝客公众号利润 编辑:程序博客网 时间:2024/06/08 19:16

使用JavaServer Faces的正面和反面

正面

也没作者不需要懂得JavascriptCSSDOM。如上个例子所示,在页面上使用AJAX组件,页面作者只需要涉及定制组件的标记库,为组件指定标记,并将相关事件映射到Javascript函数。在这里例子中,页面作者同样需要指定组件标记的URL。这里面不需要页面作者懂得任何JavascriptCSS,DOM

AJAX-enabled custom components are reusable. JavaServer Faces UI components are reusable. A page author can use them whenever and wherever they are needed. This is also true for AJAX-enabled components.

AJAX定制组件可以被重复使用。JavaServer Faces UI组件是可以重复使用的。页面作者可以在他们需要的任何时候任何地方使用。AJAX组件也是同样的。

组件开发者可以利用JavaServer Faces的优势。JavaServer Faces提供丰富的处理事件和转换验证用户输入的体系结构。组件开发者可以充分利用这些包含AJAX功能的UI组件。

应用程序开发者可以通过拖放可视组件来将AJAX添入web应用。JavaServer Faces UI组件,包括定制组件,设计为易于被引入集成开发环境(IDE)的例如Sun Java Studio Creator IDE.实际上,一系列AJAX JavaServer Faces组件已被Sun Java Studio Creator IDE包装。如果AJAX的组件被引入到IDE,应用开发者可以简单的通过拖放组件到应用程序视图来实现添加。

反面

有许多和do-it-yourself同样的缺点。使用JavaServer Faces并不能消除do-it-yourself开发者面对的一些问题。组件开发者仍需要编写Javascript代码-潜在的有很多,并懂得处理CSSDOM的复杂工作方式。组件开发者同样需要与浏览器的不兼容性,后退按钮和书签之类的UI问题做斗争。尽管如此,一个叫做Dynamic Faces的项目处理了一些这样的问题。Dynamic Faces使添加AJAX功能到JavaServer Faces UI 组件变得更简单。

Project Dynamic Faces -将AJAX添加到JavaServer Faces组件过程的升级。

使用Dynamic Faces的主要的优势是降低了你将AJAX动能添加到组件所需要写的代码量。实际上,使用Dynamic Faces可以完全消除JavaScript代码的需要。例如,设想一个页面含有菜单选项,两个按钮,和一个输出文本域。你想要AJAX化组件,文本域需依赖于用户的选择异步更新,不是整个页面的刷新。因此,页面作者需在页面上指定Dynamic Faces标记库并设置组件的AJAX区。

 

<%@ taglib prefix="jsfExt"

  uri="http://java.sun.com/jsf/extensions/dynafaces" %>

 

<jsfExt:ajaxZone id="selectzone"

  action="#{updateOutput}">

   <h:commandButton id="Selection1" ...

     actionListener=.../>

   <h:commandButton id="Selection2" ...

     actionListener=.../>

   <h:outputText value= .../>

   <h:selectOneMenu .../>

</jsfExt:ajaxZone>

 

在指定AJAX区标签里指定组件告诉Dynamic Faces哪个JavaServer Faces组件需要使用AJAX

注意这里不需要JavaScript代码。特别的,这里不需要创建,配置和操作XMLHttpRequest对象,或者提供服务端处理AJAX请求的任何代码。Dynamic Faces处理设计AJAX请求的所有底层细节。当用户点击两个按钮中的任一个,他将会调用#{updateOutput}动作。这是很简单的JavaServer Faces编码而不需要任何JavaScript

Dynamic Faces使编码一对多AJAX请求变得简单,一个组件的事件异步的更新许多其他的AJAX组件。Dynamic Faces允许你用一个AJAX请求这样做。如果不用Dynamic Faces,你需要为每个组件发出分离的AJAX请求,一些人称之为“游泳航线”("swim lane")方法。Dynamic Faces同样提供JavaScript库,你可以在组件之外用来精密控制。例如,你可以在AJAX区使用Dynamic Faces JavaScript库连接事件与某些组件,然后连接另一事件与其他AJAX组件。

最后,由于Dynamic Faces建立于JavaServer Faces框架,你仍然可以利用框架的所有优势,例如输入验证,转换,和状态管理。

 
原创粉丝点击