下载本文示例代码
Project Dynamic Faces是数个扩展JavaServer Faces技术的的项目之一。Project Dynamic Faces是一个创新型的项目,提供了向基于JavaServer Faces技术的应用软件增添Ajax功能的方法。它使我们能够让应用软件已经在使用的任何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功能。由于组件模式的协作特性,一些网页组件上的JavaScript事件能够触发该网页上任何数量的其它组件的异步更新。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标签库。 对于符合标准的非XML语法的JavaServer Pages(JSP)网页而言,这种说明如下所示:
<%@ taglib prefix="jsfExt" uri="" %> 对于符合XML语法的JavaServer Pages(JSP)网页而言,这种说明如下所示:
<jsp:root xmlns:jsp="" version="1.2"xmlns:jsfExt=""xmlns:h=""xmlns:f=""> 如果使用Facelets而非JSP,语法与JSP XML的语法非常相似,如下所示:
<html xmlns=""xmlns:h=""xmlns:jsfExt=""xmlns:f=""> 好了。我们可以开始利用Dynamic Faces向应用软件中增添Ajax功能了。 作为一种手动配置应用软件的替代性方案,我们可以使用Dynamic Faces下载包,其中包括面向JSP和Facelets的空白应用软件。如果使用现成的空白应用软件,所有的设置工作已经预先完成,我们就可以开始编写网页了。
·Java初学者专区
·Java高级技术
E夏Java轻松行 JBuilder 2005全接触
从老虎到野马 Java 6.0新功能观察
·Java图像与多媒体
·Java网络编程
·Eclipse
·Hibernate
·Spring
·Struts
·Java设计模式
·EJB开发 查看关于 AJAX 的所有资料共4页。 1 2 3 4 :
Project Dynamic Faces是数个扩展JavaServer Faces技术的的项目之一。Project Dynamic Faces是一个创新型的项目,提供了向基于JavaServer Faces技术的应用软件增添Ajax功能的方法。它使我们能够让应用软件已经在使用的任何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功能。由于组件模式的协作特性,一些网页组件上的JavaScript事件能够触发该网页上任何数量的其它组件的异步更新。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标签库。 对于符合标准的非XML语法的JavaServer Pages(JSP)网页而言,这种说明如下所示:
<%@ taglib prefix="jsfExt" uri="" %> 对于符合XML语法的JavaServer Pages(JSP)网页而言,这种说明如下所示:
<jsp:root xmlns:jsp="" version="1.2"xmlns:jsfExt=""xmlns:h=""xmlns:f=""> 如果使用Facelets而非JSP,语法与JSP XML的语法非常相似,如下所示:
<html xmlns=""xmlns:h=""xmlns:jsfExt=""xmlns:f=""> 好了。我们可以开始利用Dynamic Faces向应用软件中增添Ajax功能了。 作为一种手动配置应用软件的替代性方案,我们可以使用Dynamic Faces下载包,其中包括面向JSP和Facelets的空白应用软件。如果使用现成的空白应用软件,所有的设置工作已经预先完成,我们就可以开始编写网页了。
·Java初学者专区
·Java高级技术
E夏Java轻松行 JBuilder 2005全接触
从老虎到野马 Java 6.0新功能观察
·Java图像与多媒体
·Java网络编程
·Eclipse
·Hibernate
·Spring
·Struts
·Java设计模式
·EJB开发 查看关于 AJAX 的所有资料共4页。 1 2 3 4 :
下载本文示例代码
AJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic FacesAJAX和Web开发新技术:Dynamic Faces
阅读(743) | 评论(0) | 转发(0) |