分类: Java
2009-02-18 13:48:29
为开发JSF应用,需要一个JSF实现。参考实现(RI)是所有其它实现都要遵循的标准。
所有JSF应用都必须的JAR文件:
Jsf-api.jar, jsf-impl.jar, jstl.jar, standard.jar, commons-beanutils.jar,
commons-collections.jar, commons-digester.jar, commons-logging.jar
web.xml配置:
…
…
JSF应用的配置参数:
Context参数 |
说明 |
默认 |
javax.faces.CONFIG_FILES |
逗号分隔的上下文相关的资源路径列表,JSF将在装载WEB-INF/faces-config.xml之前载入这些资源 |
无 |
java.faces.DEFAULT_SUFFIX |
当使用扩展名映射(后缀映射如*.faces)时,所使用资源的默认后缀 |
.jsp |
java.faces.LIFECYCLE_ID |
当在这个应用中处理JSF请求时,所使用的生命周期实例的标识符 |
默认的生命周期模型 |
javax.faces.STATE_SAVING_METHOD |
指示在客户端(client)还是在服务器端(server)保存UI组件的状态 |
server |
RI特定的配置参数:
Context参数 |
说明 |
默认 |
com.sun.faces.NUMBER_OF_VIEWS_IN_SESSION |
当状态保存方法设置为server时,控制会话中保存的视图数量 |
无 |
com.sun.faces.validateXml |
告诉JSF根据DTD验证配置文件 |
false |
com.sun.faces.verifyObjects |
告诉JSF验证其可以创建应用对象(组件,呈现器,转换器等) |
false |
MyFaces特定的配置参数:
Context参数 |
说明 |
默认 |
myfaces_allow_javascript |
True,如果组件允许JavaScript |
true |
myfaces_pretty_html |
指定显示的HTML是否进行格式化,以便它是“人可读的”(给输出附加的不影响HTML代码的行分隔符和空格) |
true |
myfaces_allow_designmode |
使用CGLib字节码类修改的实现设计模式 |
false |
JSF应用配置总体分为三种:分别针对日常应用开发,UI扩展开发(编写组件,呈现器,转换器或者验证器)和高级开发。
faces-config.xml中三类主要配置类别以及对应的XML元素(顶层根元素
类别 |
特征 |
XML元素 |
日常应用配置和高级扩展的注册 |
应用配置。用于指定支持的语言,定制应用消息的位置,默认的呈现包,以及高级的可插入组件 |
|
受管bean创建工具。 |
| |
控制在特定范围的对象的自动创建被引用的bean |
| |
用来告诉IDE其它可以访问的对象的导航规则,控制一个页面到另一个页面的应用流 |
| |
用户界面扩展注册 |
组件注册。用于向系统注册组件 |
|
呈现包和呈现器注册。用于向呈现包添加呈现器或者定义整个新的呈现包 |
| |
验证器注册。用于向系统注册验证器 |
| |
转换器注册。用于向系统注册转换器 |
| |
高级扩展特征的配置 |
阶段监听器注册。向系统注册阶段监听器 |
|
工厂配置。定义实例化核心JSF类的工厂 |
|
faces-config.xml:
“-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN”
>
场所有消息资源束 -->
定制验证器 -->
crstore.FormatValidator with the validator identifier,FormatValidator.
Compares these patterns against the data entered in a component that
Has this validator registered on it.
定制转换器 -->
carstore.CreditCardConverter using the ID, creditcard.
受管bean -->
…
JSF定制标签库:
URI |
名称 |
通用前缀 |
说明 |
|
Core |
f |
包含独立于特定呈现器的标签(如 |
|
HTML |
h |
包含所有标准组件和HTML呈现包 |
JSF支持两种包含。对动态包含,有两个要求:
1. 被包含页面必须封装在JSF
2. 被包含页面中的所有模板文本和非JSF标签必须位于JSF
所以,假定有下面的JSP页面的代码片断:
…
…
而foo.jsp可能是这样的:
…
Templaate text.
可以看到,整个被包含页面被封装在
使用静态包含要更简单些。无特别的限制—甚至并不非要使用