Seam - 无缝集成JSF,第2部分: 借助Seam进行对话 - 编程入门网
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 变量解析器
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |