在<context-param>
中有几个JavaServer Faces web.xml
:facelets.REFRESH_PERIOD
,facelets.DEVELOPMENT
,facelets.SKIP_COMMENTS
等。在哪里可以找到所有这些参数的完整列表?
首先,以facelets.
开头的那些不是JSF上下文参数,而是Facelets 1.x上下文参数。以前,在JSF 1.x时代,Facelets并未作为JSF的一部分进行集成。但是,自JSF 2.0以来,Facelets作为JSF的一部分进行集成,将遗留JSP替换为默认视图技术,并且大多数Facelets 1.x上下文参数都重新映射到JSF 2.x上下文参数。
真正的JSF上下文参数名称以javax.faces.
开头。它们列在JSF specification的第11.1.3章中。以下是JSF 2.0规范的相关摘录:
11.1.3 Application Configuration Parameters
Servlet容器支持可以通过在Web应用程序部署描述符中包含
<context-param>
元素来自定义的应用程序配置参数。所有JSF实现都需要支持以下应用程序配置参数名称:
javax.faces.CONFIG_FILES
- 在加载名为“/WEB-INF/faces-config.xml
”的配置资源之前,JSF实现将查找应用程序配置资源(请参见第11.4.4节“应用程序配置资源格式”)的上下文相关资源路径的逗号分隔列表(如果是这样的话)资源存在)。如果列表中存在“/WEB-INF/faces-config.xml
”,则必须将其忽略。javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE
- 如果设置了这个参数,并且在其值的toLowerCase().equals("true")
表示上调用String
返回true
,则Application.createConverter()
必须保证所有javax.faces.convert.DateTimeConverter
实例的时区的默认值必须等于TimeZone.getDefault()
而不是“GMT
”。javax.faces.DEFAULT_SUFFIX
- 允许Web应用程序为包含JSF内容的JSP页面定义备用后缀。有关完整规范,请参阅符号常量ViewHandler.DEFAULT_SUFFIX_PARAM_NAME
的javadocs。javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER
- 如果设置了此参数,并且在其值的toLowerCase().equals("true")
表示上调用String
返回true
,则默认的ViewHandler
必须按照此规范的最新1.2版本中的规定运行。在第7.5节“ViewHandler”中指定并在默认ViewHandler
中实现的任何行为都不能由运行时执行,这些行为与处理JavaServer Faces View声明语言中创建的页面的请求有关。javax.faces.FACELETS_LIBRARIES
- 如果设置了此参数,运行时必须将其解释为以分号(;)分隔的路径列表,以“/”开头(不带引号)。运行时必须将列表中的每个条目解释为相对于Web应用程序根目录的路径,并将在该路径中找到的文件解释为facelet标记库,符合第1.1节“应用程序配置资源文件的XML架构定义”中声明的模式并根据第10.3.2节“Facelet标签库机制”公开其中的标签。运行时还必须将facelets.LIBRARIES
param名称视为此param名称的别名,以便向后兼容现有facelets标记库。javax.faces.FACELETS_BUFFER_SIZE
- 生成ResponseWriter
时在响应上设置的缓冲区大小。默认情况下,该值为-1,不会在响应上指定缓冲区大小。如果您使用开发模式以保证在生成错误时不会部分呈现响应,则应该增加此值。运行时还必须将facelets.BUFFER_SIZE
param名称视为此param名称的别名,以便向后兼容现有facelets标记库。javax.faces.DECORATORS
- 一个分号(;)分隔的类型为javax.faces.view.facelets.TagDecorator
的类名列表,带有无参构造函数。当Facelets VDL视图的第一个请求命中ViewHandler
进行页面编译时,将加载这些装饰器。运行时还必须将facelets.DECORATORS
参数名称视为此参数名称的别名,以便向后兼容现有的facelets标记库。javax.faces.FACELETS_REFRESH_PERIOD
- 当请求页面时,编译器应检查更改的秒数。如果您不希望编译器在编译页面后检查更改,则使用值-1。设置低刷新周期有助于在开发期间编辑正在运行的应用程序中的页面。运行时还必须将facelets.REFRESH_PERIOD
参数名称视为此参数名称的别名,以便向后兼容现有的facelets标记库。javax.faces.FACELETS_RESOURCE_RESOLVER
- 如果设置了此参数,则运行时必须将其值解释为扩展javax.faces.view.facelets.ResourceResolver
的java类的完全限定类名,并且具有零参数公共构造函数或一个参数公共构造函数,其中参数的类型为ResourceResolver
。如果设置了此参数且其值不符合这些要求,则运行时必须记录消息并继续。如果它符合这些要求并且具有单参数构造函数,则必须将默认的ResourceResolver
传递给构造函数。如果它具有零参数构造函数,则直接调用它。在任何一种情况下,新的ResourceResolver
取代旧的。运行时还必须将facelets.RESOURCE_RESOLVER
param名称视为此param名称的别名,以便向后兼容现有facelets标记库。javax.faces.FACELETS_SKIP_COMMENTS
- 如果设置了此参数,并且在其值的toLowerCase().equals("true")
表示上调用String
返回true
,则运行时必须确保Facelets源页面中的任何XML注释都不会传递给客户端。运行时还必须将facelets.SKIP_COMMENTS
param名称视为此param名称的别名,以便向后兼容现有facelets标记库。javax.faces.FACELETS_SUFFIX
- 允许Web应用程序为包含JSF内容的基于Facelet的XHTML页面定义备用后缀。有关完整规范,请参阅符号常量ViewHandler.FACELETS_SUFFIX_PARAM_NAME
的javadocs。javax.faces.FACELETS_VIEW_MAPPINGS
- 如果设置了此参数,运行时必须将其解释为分号(;)分隔的字符串列表,用于强制声明应用程序中的某些页面必须解释为使用Facelets,而不管其扩展名如何。运行时还必须将facelets.VIEW_MAPPINGS
param名称视为此param名称的别名,以便向后兼容现有facelets应用程序。有关完整规范,请参阅符号常量ViewHandler.FACELETS_VIEW_MAPPINGS_PARAM_NAME
的javadocs。javax.faces.FULL_STATE_SAVING_VIEW_IDS
- 运行时必须将此参数的值解释为逗号分隔的视图ID列表,每个视图ID必须使用JSF 1.2中指定的状态保存机制保存其状态。javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
- 如果设置了这个参数,并且在其值的toLowerCase().equals("true")
表示上调用String
返回true
,则任何UIInput.validate()
的实现都必须采取以下附加操作。如果javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
上下文参数值是true
(忽略大小写),并且UIInput.getSubmittedValue()
返回零长度String
调用UIInput.setSubmittedValue(null)
并继续使用null作为当前提交的值进行处理javax.faces.LIFECYCLE_ID
- 处理此Web应用程序的JSF请求时要使用的Lifecycle
实例的生命周期标识符。如果未指定,则必须使用由LifecycleFactory.DEFAULT_LIFECYCLE
标识的JSF缺省实例。javax.faces.PARTIAL_STATE_SAVING
- 运行时查询的ServletContext
init参数,用于确定是否应使用部分状态保存机制。如果未定义,则运行时必须确定应用程序的版本级别。 对于1.2及以下版本的应用程序,运行时不得使用部分状态保存机制。 对于2.0及更高版本的应用程序,运行时必须使用部分状态保存机制。 如果定义了此参数,并且应用程序的版本为1.2及更低版本,则运行时不能使用部分状态保存机制。否则,如果定义了此参数,并且在其值的toLowerCase().equals("true")
表示上调用String
返回true
,则运行时必须使用部分状态机制。否则,不得使用部分状态保存机制。javax.faces.PROJECT_STAGE
- 描述此特定JSF应用程序在软件开发生命周期中的位置的可读字符串。有效值为“Development
”,“UnitTest
”,“SystemTest
”或“Production
”,对应于类javax.faces.application.ProjectStage
的枚举常量。也可以通过JNDI设置该值。请参阅Application.getProjectStage()
的javadocs。javax.faces.STATE_SAVING_METHOD
- 保存状态信息的位置。有效值为“server
”(通常保存在HttpSession
中)和“client
”(通常在后续表单提交中保存为隐藏字段)。如果未指定,则必须使用默认值“server
”。javax.faces.VALIDATE_EMPTY_FIELDS
- 如果设置了这个参数,并且在toLowerCase().equals("true")
表示其值上调用String
返回true
,则所有提交的字段都将被验证。这是允许模型验证器决定当前应用程序中是否允许空值或空值的必要条件。如果值为false
,则null或空值将不会传递给验证器。如果值是字符串“auto
”,则运行时必须检查当前环境中是否存在JSR-303 Bean验证。如果是这样,运行时必须继续进行,就像指定了值“true
”一样。如果当前环境中不存在JSR-303 Bean验证,则运行时大部分都会进行,就像指定了值“false
”一样。如果未设置param,则系统必须表现为param设置为值“auto
”。javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR
- 如果设置了此参数,并且在其值的toLowerCase().equals("true")
表示上调用String
返回true
,则运行时不能自动将验证器的验证者id等于符号常量javax.faces.validator.VALIDATOR_ID
的值添加到默认验证器列表中。将此参数设置为true将禁止将Bean Validation自动安装到应用程序中每个视图中的每个输入组件,但仍可以手动安装。JSF实现可以选择支持其他配置参数,以及定制JSF实现的其他机制;但是,依赖这些工具的应用程序将无法移植到其他JSF实现。
正如您在上一段中所读到的,JSF实现也可能有自己的一组上下文参数。对于Mojarra,这是以com.sun.faces.
开头的,在这个博客上列出:What Mojarra context parameters are available?对于MyFaces,以org.apache.myfaces.
开头,也在他们自己的网站上列出:MyFaces documentation - Web Context Parameters。