扩展核心 JSF 类
前所述,JSF 最引人注目的优点之一就是其可插入架构。其大部分特征都是通过可以
轻易被可选实现所替代的类来处理的,这些可选实现可以增强或者替换默认的行为。
这也正是你可以使用 JSP 之外的显示技术(见附录 A),而且它也是允许你修改 JSF 处理表达式、
导航、状态管理、默认的动作监听器等等方式的原因。
在这个附录中,我们将研究 JSF 的架构并讨论如何扩展其核心特征。
为何将这些内容放到附录而不是章节正文中呢?这有个简单原因:大多数开发人员使用默
认的行为和特征就足够了,并不需要关心
JSF
的内部。但是,如果你想要进行高级
JSF
开发,
你将会对
JSF
的架构很感兴趣,或者你只是想以某种方式定制化某个实现,这个附录就是
针对你的。
C.1 隐藏于幕后的类
核心的 JSF 类可以分为两种:基础架构类和可插入类。基础类包括 Lifecycle、RenderKit、
Application 和 FacesContext。Lifecycle 用于执行请求处理生命周期。RenderKit 则用于
管理呈现器集合,而
Application 则维护着对可插入类的的引用,并且提供对其他配置信息的
访问。最后是
FacesContext,它处理所有针对请求的功能。
所有这些类都是由工厂创建的,该工厂是在应用配置文件中配置的,并且可通过
FactoryFinder(它是一个 singleton)定位。这些类都被列于表 C-1 中。
表 C-1 基础类形成了 JSF 功能的骨架
类 说 明 可配置?
javax.faces.FactoryFinder
创建并保存工厂实例。具体的工厂实现可通
过查询有效的配置文件找到,或者从
META-INF/ services/{factory-class-name}文件
(位于 Web 应用自身或者其库路径的任何
JAR 中)中的第一行获得
否
如
附录 C
顺便
说说
评论0