使用支持 AJAX 的 JavaServer Faces 组件库编写应用程序

作者:Yutaka Yoshida
状态:在 Early Access 版本阶段

问题描述

本文介绍了使用支持 AJAX 的 JavaServer Faces 组件库编写应用程序的编程模型。一种将 AJAX 与 Java EE 应用程序结合使用的编程模型是,将 JavaScript 代码包装在一组 JSF 组件中,然后使用这些支持 AJAX 的 JSF 组件。开发者可随后按照与任何 JSF 组件库相同的方式来使用支持 AJAX 的 JSF 组件库。这种方法具有向开发者隐藏 JavaScript 和 AJAX 复杂内容的优点。例如,开发者可以在其 Web 应用程序中使用 Java BluePrints AJAX 组件库以添加一个进度栏或一个 Google 地图的搜索结果。这种编程模型将工作负担转移到在 JSF 组件中包装 AJAX 代码的组件开发者身上,使应用程序开发者可以使用组件库方便地构建 Web 应用程序。

解决方案

通常,使用支持 AJAX 的 JSF 组件库的方法与使用任何 JSF 组件库相同。JSF 组件完成处理请求(此处为 XMLHttpRequests 发出的请求)的操作,并将响应发回到浏览器客户端。对于支持 AJAX 的 JSF 组件,发回的响应可能是在浏览器中运行的 JavaScript 代码片段以及一些用于显示的 HTML 或数据。让我们看一下,如何在 Web 应用程序中使用支持 AJAX 的 JSF 组件库。
典型的 JavaServer Faces 定制组件库 JAR 如图 1 中所示。
组件结构
图 1:典型的 JavaServer Faces 组件结构

下面的图 2 显示了 TLD 和 JSP 页面之间的关系。在定制组件中,Web 应用程序开发者必须注意标记库描述符 (*.tld) 和以下信息:
  1. 用于在 Web 应用程序的 JSP 页中指定标记库的 <uri>。
  2. 标记名称和关联的属性。如果提供了标记库的 Javadoc,则开发者不需要阅读 TLD 文件中的 XML。
tld-jsp 关系
图 2:TLD 和 JSP 之间的关系

正如图 1 和图 2 中所示,使用支持 AJAX 的 JSF 组件的方法与使用任何 JSF 组件基本相同。使用 JSF 组件库开发 Web 应用程序时,开发者应注意的一点是,确保在 JSP 页中编写正确的标记库描述符。如果在一个 Web 应用程序中使用多个 JavaServer Faces 定制组件,请确保每个组件在 TLD 中具有不同的 <uri>,并将它们正确加入到 JSP 页面中。还要考虑的一点是,如果开发者要使用支持 Bean 并编写 <ui:custom value="#{bean.abc}"></ui:custom>,则必须使用 ValueBinding 类对组件中的标记处理程序类和呈现器进行正确编码。

下面的图 3 总结了一些重要元素,尤其是用于开发包含多个 JavaServer Faces 定制组件的 Web 应用程序的元素。
tld-jsp 关系
图 3:TLD 和 faces-config.xml 中的重要元素

参考资料

以下参考资料可能会对您有所帮助:


© Sun Microsystems 2006。Java BluePrints Solutions Catalog 中的所有内容受版权保护,未经 Sun Microsystems 的明确书面许可,不得在其他产品中发布。