Seam无缝集成:为JSF定做应用程序框架 - 编程入门网
的优点是可以减少单个方法在呈现视图时需要预先做的工作。在组件框架中,UI 事件或解析的值绑定表达式直接导致方法调用。
一个应用程序即使只达到中度成熟,它通常也需要在任何给定页面上使用很多不相关的活动。如果将对所有这些信息的管理全部放入一个动作或者一个动作链中,那么势必给维护带来极大的困扰。因此,开发人员常常发现他们的代码偏离了面向对象模型的轨道,反而陷入了过程编程模型的泥潭。相反,组件框架将这种工作隔离出来,更自然地加强了对象的角色和责任。 Seam无缝集成:为JSF定做应用程序框架(4)时间:2011-03-06Seam 与 JSF 对于 JSF 和组件框架的基础已经介绍得差不多了。实际上 —— 很多 Java 开发人员最近发现 —— 转移到 JSF 并非总是一帆风顺。采用组件模型会带来一些全新的问题,首要的一个问题是您通常需要试着使应用程序符合基于动作的 Web。很多时候,JSF 需要具有像基于动作的框架那样的行为,但是在标准 JSF 中这是不可行的,至少不为每个请求使用 phase ******就不行。 JSF 的其他主要缺点还包括对 HTTP 会话的依赖过重(尤其是在一序列的页面之间传播数据时),简陋的异常处理,缺少书签支持,以及太多的 XML 配置。通过与 JSF 自然地集成,同时加入 JSF 规范委员会放弃的或者忽略掉的新功能,Seam 解决了很多这样的问题。Seam 的框架鼓励使用紧凑的、易读的、可重用的代码,并且避免了所有为解决上述问题而常常加入的 “粘连(glue)” 逻辑。图 3 涵盖了 JSF 生命周期中用于简化应用程序代码的大多数 Seam 扩展点: 图 3. Seam 生命周期增强 让我们来考虑其中一些增强,因为它们适用于 JSF 开发中一些常见的挑战。 并不复杂的配置 Seam 演示了 Java 5 注释的一个非常实用的用法。Seam 的部署扫描程序检查所有包含 seam.properties 文件的归档文件,并为所有标有 @Name 注释的类创建一个 Seam 组件。由于 Java 语言缺乏用于在代码级添加元数据的一种公共语法,因此需要设计很多 XML 配置。当 Java 5 规范中加入注释后,就获得了一个更好的解决方案。由于大多数 backing bean 是为了在特定应用程序中使用而开发的,因此没有理由将这些 bean 的配置 “抽象” 到类本身以外的任何文件中。附带的好处是,您可以少处理一个文件。Seam 提供了一组完整的注释来帮助将 bean 集成到 JSF 生命周期中。清单 4 显示了其中一些。 页面动作和 RESTful URL 在不使用组件框架的情况下,另一个必须解决的熟悉的问题是预先处理每个请求,就像在基于动作的框架中那样。受此影响的用例是 RESTful URL、书签支持、通过 URL 模式获得的安全性以及页面流验证等。这也是学习使用 JSF 的开发人员容易感到困惑的主要原因之一。有些 JSF 供应商通过用开发人员工具提供 onPageLoad 功能来绕过这个问题(见 参考资料),但这不是核心规范的一部分。 当用户直接从书签(比如)请求一个商品详细信息屏幕时,通常会发生什么事情呢?由于 JSF 控制器采取被动方式,当页面开始呈现时,即使明显没有目标数据,也不能将用户重新带到逻辑流的开始处。相反,这种情况下只能显示一个空页面,其中只有一些空值或其他可能存在的假信号。 首先,您可能会本能地想要在页面的主 backing bean 上实现一个 “divrender” 方法。然而,在组件框架中,backing bean 与页面之间的关系并不一定都是一对一的。每个页面可能依赖于多个 backing bean,每个那样的 bean 也可能在多个不同的页面上使用。必须用某种方式将一个视图 ID(例如 /user/detail.jspx)与一个或多个方法关联起来,当选择呈现相应的视图模板时就调用这个(些)方法。您可以使用 phase-listener 方法, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |