快速业务通道

Seam - 无缝集成JSF,第2部分: 借助Seam进行对话 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

Seam - 无缝集成JSF,第2部分: 借助Seam进行对话

时间:2011-06-25 IBM Dan Allen

在这个分为三部分的系列文章的第一篇(http://www.bianceng.cn/Programming/Java/201103/24860.htm)中介绍了 Seam,它是既能显著增强 JSF 功能又能实现基于组件的架构的应用程序框架。在这篇文章中,我解释了 Seam 和其他经常与 JSF 结合使用的 Web 框架的不同之处,展示了向现有 JSF 应用程序添加 Seam 是多么轻松,最后概述了 Seam 对 JSF 应用程序生命周期的增强,同时还涉及到有状态的对话、工厂组件以及使用注释进行隐秘配置。

尽管这篇文章可能引发了您对 Seam 的兴趣,但是您可能无法确信它能够改善 JSF 开发体验。集成一组新工具通常比阅读它复杂得多,并且有时候并不值得。在无缝 JSF 系列文章的第二篇文章中,您将亲自发现 Seam 是否能够实现其简化 JSF 开发的承诺。在使用 Seam 构建执行标准 CRUD 操作的简单应用程序之后,我敢肯定您会认为 Seam 是对 JSF 框架的必要扩展。结果,Seam 还能帮助降低数据库层有限资源的负载。

Open 18 应用程序

Open 18 是基于 Web 的应用程序,允许用户管理一列曾经体验过的高尔夫课程,并记录每个场次的分数。为了体现本讨论的目的,该应用程序的范围仅限于管理高尔夫课程目录。第一个屏幕展现了已经输入的课程列表,并列出各个课程的一些相关字段,如课程名称、地点和专卖店的电话号码。用户可以从该处查看完整的课程详细内容、添加新课程、编辑现有课程,最终还可以删除课程。

在讲述如何使用 Seam 为 Open 18 应用程序开发用例时,我重点讲述它如何简化代码,自动管理一系列请求期间的状态,并对输入数据执行数据模型验证。

该系列文章的目标之一是证明 Seam 可以集成到现有的任何 JSF 应用程序,并且不需要转换到 Enterprise JavaBeans (EJB) 3。因此,Open 18 应用程序并不依靠 Seam 的 JPA EntityManager 集成进行事务型数据库访问,也不依靠 EBJ3 有状态会话 bean 进行状态管理。(Seam 附带的示例 大多都使用了这两项技术。)Open 18 设计为使用无状态的分层架构。服务层和数据访问 (DAO) 层使用 Spring 框架绑定到一起。我相信由于 Spring 在 Web 应用程序领域的普遍性,该设计是切实可行的选择。该应用程序展示了如何通过使用 conversation 作用域将有状态的行为引入到 JSF 托管的 bean。记住这些 bean 是简单的 POJO。

您可以 下载 Open 18 源文件 以及 Maven 2,以编译并运行样例代码。为了使您快速入门,我已经将该应用程序配置为使用 Seam 和 Spring-JSF 集成。如果想要在自己的项目中设置 Seam,可以在 本系列第一篇文章 中找到完整的操作指导。请参见 参考资料 了解关于集成 JSF 和 Spring 的更多信息。

两个容器的故事

构建利用 Spring 框架的 JSF 应用程序的第一个步骤是配置 JSF,使其可以访问 Spring 容器中的 bean。spring-web 包是 Spring 发布的一部分,附带有自定义 JSF 变量解析器,可构建此桥梁。首先,Spring 解析器委托给 JSF 实现附带的本地解析器。本地解析器尝试将值绑定引用(如 #{courseManager})与 JSF 容器中的托管 bean 相匹配。该 bean 名称是由 #{} 表达式分隔符之间的字符组成的,在这个例子中为 courseManager。如果该查找未能发现匹配,自定义解析器就会检查 Spring 的 WebApplicationContext,以查找带有匹配 id 属性的 Spring bean。请记住 Seam 是 JSF 框架的扩展,因此 JSF 可以访问的任何变量也可以被 Seam 访问。

Spring 变量解析器是使用变量解析器节点在 faces-config.xml 文件中配置的,如清单1所示:

清单 1. 配置 spring 变量解析器

<variable-resolver>  org.springframework.web.jsf.DelegatingVariableResolver <

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号