RSS
热门关键字:  php  lighttpd  找回密码  密码找回  client
当前位置 :| 主页>技术资料>ajax>

AJAX和Web开发新技术DynamicFaces简介

来源:phpsoho.com 作者:本站编辑 时间:2008-08-08 Tag: 点击:

  作者: 刘彦青编译

  Project Dynamic Faces是数个扩展JavaServer Faces技术的的项目之一。Project Dynamic Faces是一个创新型的项目,提供了向基于JavaServer Faces技术的增添功能的方法。

它使我们能够让应用软件已经在使用的任何JavaServer Faces组件支持Ajax功能。我们无需对组件进行修改就能够使它们支持Ajax,我们也无需对应用软件进行任何修改就可以使它具有Ajax的魔力。

  要使应用软件具有Ajax魔力,我们必须首先确定应用中希望Ajax功能更新的网页部分。象基于JavaServer Faces技术的开发人员了解的那样,JavaServer Faces网页是由组件树表示的。利用Dynamic Faces,我们能够确定组件树中的哪个组件会受益于异步更新。就象使用Ajax更新代表网页的HTML DOM树的一部分那样,我们使用Dynamic Faces更新代表JavaServer Faces网页的组件树的一部分。因此,Dynamic Faces机制对于Ajax和JavaServer Faces开发人员而言是熟悉的。

  更重要的是,Dynamic Faces使用JavaServer Faces组件模式,使我们能够以一种更有效的方式利用Ajax功能。由于组件模式的协作特性,一些网页组件上的事件能够触发该网页上任何数量的其它组件的异步更新。Dynamic Faces使得这些异步更新只是向发送的一次Ajax请求的结果,而不是导致每次异步更新的Ajax请求的结果。

  Dynamic Faces还利用JavaServer Faces组件模式有效地管理客户机端和服务器端的状态。当Dynamic Faces更新客户机端上的组件状态时,它更新的只是已经改变的组件而不是整个树的状态。最好的一点是Dynamic Faces在后台完成所有这些操作,而且是以一种与JavaServer Faces技术的生命周期完全一致的方式完成的。

  除了简化向应用软件增添Ajax功能外,Dynamic Faces还向我们提供了增添Ajax功能的方法的灵活性。这篇文章将讨论利用Dynamic Faces使应用软件更具交互性和活力的三种方法:

  ·利用Dynamic Faces提供的定制ajaxZone标签确定组件树中需要被Ajax化的部分。

  ·利用Dynamic Faces提供的JavaScript库向单个组件增添Ajax功能。

  ·在一个网页中增添支持Ajax的组件,例如jMaki widget。

  在学习这些技术前,我们先来看看应用软件如何才能使用Dynamic Faces技术。

  开发利用Dynamic Faces的应用软件

  通过向一个标准的JavaServer Faces 1.2实现中增添Ajax功能,Dynamic Faces利用了JavaServer Faces技术的运行时间库的可扩展性。 Dynamic Faces的核心是定制的Lifecycle和ViewRoot实现。这二个实现是JavaServer Faces技术提供的标准Lifecycle和ViewRoot实现的扩展, 一个标准的Lifecycle对象代表JavaServer Faces生命周期的一个实例,一个标准的ViewRoot对象代表一个组件树的根。联合使用定制Lifecycle对象和定制ViewRoot对象,使JavaServer Faces生命周期能够处理Ajax事务,在无需对整个网页更新的情况下重新显示组件树的一部分。这些定制实现服从于不支持Ajax请求的标准实现。

  为了使JavaServer Faces技术运行时间库知道定制Lifecycle对象的存在,我们必须在配置描述器中利用一个初始化参数向FacesServlet实例报告该对象。

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<init-param>
<param-name>javax.faces.LIFECYCLE_ID</param-name>
<param-value>com.sun.faces.lifecycle.PARTIAL</param-name>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

  此外,我们还必须将Dynamic Faces依赖的Java Archive(JAR)文件添加到应用软件的web archive(WAR)文件的lib目录中。因为Dynamic Faces是基于Java Platform Enterprise Edition 5(Java EE 5)的,我们所需要的几乎所有依赖关系都已经存在。最后一个依赖是Shale Remoting,Dynamic Faces利用它从Java类路径中加载JavaScript文件和其它资源。 Shale Remoting依赖于commons-logging,因此我们必须向应用软件提供commons-logging。

  最后,我们必须在使用它的每个网页中说明该Dynamic Faces标签库。 对于符合标准的非语法的JavaServer Pages()网页而言,这种说明如下所示:

<%@ taglib prefix="jsfExt" uri="http://java.sun.com/jsf/extensions/dynafaces" %>

  对于符合XML语法的JavaServer Pages(JSP)网页而言,这种说明如下所示:

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"
xmlns:jsfExt="http://java.sun.com/jsf/extensions/dynafaces"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">

  如果使用Facelets而非JSP,语法与JSP XML的语法非常相似,如下所示:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:jsfExt="http://java.sun.com/jsf/extensions/dynafaces"
xmlns:f="http://java.sun.com/jsf/core">

  好了。我们可以开始利用Dynamic Faces向应用软件中增添Ajax功能了。

  作为一种手动配置应用软件的替代性方案,我们可以使用Dynamic Faces下载包,其中包括面向JSP和Facelets的空白应用软件。如果使用现成的空白应用软件,所有的设置工作已经预先完成,我们就可以开始编写网页了。

 
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册