34

: ,等中有几个 JavaServer Faces 。<context-param>在哪里可以找到所有这些参数的完整列表?web.xmlfacelets.REFRESH_PERIODfacelets.DEVELOPMENTfacelets.SKIP_COMMENTS

4

1 回答 1

84

首先,开头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 规范的第 11.1.3 章中列出。以下是 JSF 2.0 规范的相关摘录:

11.1.3 应用配置参数

<context-param>Servlet 容器支持可以通过在 Web 应用程序部署描述符中包含元素来定制的应用程序配置参数。所有 JSF 实现都需要支持以下应用程序配置参数名称:

  • javax.faces.CONFIG_FILES-- 在加载名为“<code>/WEB- INF/faces-config.xml”(如果存在这样的资源)。如果列表中存在“<code>/WEB-INF/faces-config.xml”,则必须忽略它。

  • javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE-- 如果设置了这个参数,并且调用它的值toLowerCase().equals("true")的表示返回, 必须保证所有 实例的时区的默认值必须等于 而不是“<code>GMT”。StringtrueApplication.createConverter()javax.faces.convert.DateTimeConverterTimeZone.getDefault()

  • javax.faces.DEFAULT_SUFFIX-- 允许 Web 应用程序为包含 JSF 内容的 JSP 页面定义备用后缀。ViewHandler.DEFAULT_SUFFIX_PARAM_NAME有关完整规范的符号常量,请参见 javadocs 。

  • javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER-- 如果设置了此参数,并且调用 其值toLowerCase().equals("true")的表示返回,则默认值 必须按照本规范的最新 1.2 版本中指定的行为。任何在第 7.5 节“ViewHandler”中指定并在默认情况下实现的与处理以 JavaServer Faces 视图声明语言编写的页面请求有关的行为都不得由运行时执行。StringtrueViewHandlerViewHandler

  • javax.faces.FACELETS_LIBRARIES-- 如果设置了此参数,则运行时必须将其解释为分号 (;) 分隔的路径列表,以“/”开头(不带引号)。运行时必须将列表中的每个条目解释为相对于 Web 应用程序根的路径,并将在该路径找到的文件解释为 facelet 标记库,符合第 1.1 节“应用程序配置资源文件的 XML 模式定义”中声明的模式并根据第 10.3.2 节“Facelet 标签库机制”公开其中的标签。运行时还必须将 facelets.LIBRARIES参数名称视为此参数名称的别名,以便与现有的 facelets 标记库向后兼容。

  • javax.faces.FACELETS_BUFFER_SIZE-- 生成时在响应上设置的缓冲区大小ResponseWriter 。默认情况下,该值为 -1,它不会为响应分配缓冲区大小。如果您使用开发模式,则应增加此值,以确保在生成错误时不会部分呈现响应。运行时还必须将facelets.BUFFER_SIZE参数名称视为此参数名称的别名,以便与现有的 facelets 标记库向后兼容。

  • javax.faces.DECORATORS-- 分号 (;) 分隔的类型的类名列表 javax.faces.view.facelets.TagDecorator,带有无参数构造函数。ViewHandler当对 Facelets VDL 视图的第一次请求命中页面编译时,将加载这些装饰器。运行时还必须将facelets.DECORATORS参数名称视为此参数名称的别名,以便与现有的 facelets 标记库向后兼容。

  • javax.faces.FACELETS_REFRESH_PERIOD-- 当一个页面被请求时,编译器应该检查更改的时间间隔(以秒为单位)。如果您不希望编译器在编译页面后检查更改,则使用值 -1。设置较低的刷新周期有助于在开发过程中编辑正在运行的应用程序中的页面。运行时还必须将facelets.REFRESH_PERIOD参数名称视为此参数名称的别名,以便与现有的 facelets 标记库向后兼容。

  • javax.faces.FACELETS_RESOURCE_RESOLVER-- 如果设置了此参数,则运行时必须将其值解释为 java 类的完全限定类名,该类扩展javax.faces.view.facelets.ResourceResolver 并具有零参数公共构造函数或一个参数公共构造函数,其中参数类型为 ResourceResolver。如果设置了此参数并且其值不符合这些要求,则运行时必须记录一条消息并继续。如果它确实符合这些要求并且具有单参数构造函数,则 ResourceResolver必须将默认值传递给构造函数。如果它有一个零参数构造函数,则直接调用它。在任何一种情况下,新的都会ResourceResolver取代旧的。运行时还必须将 facelets.RESOURCE_RESOLVER参数名称视为此参数名称的别名,以便与现有的 facelets 标记库向后兼容。

  • javax.faces.FACELETS_SKIP_COMMENTS-- 如果设置了此参数,并且调用 其值toLowerCase().equals("true")的表示返回,则运行时必须确保 Facelets 源页面中的任何 XML 注释都不会传递给客户端。运行时还必须将参数名称视为此参数名称的别名,以便与现有的 facelets 标记库向后兼容。Stringtruefacelets.SKIP_COMMENTS

  • javax.faces.FACELETS_SUFFIX-- 允许 Web 应用程序为包含 JSF 内容的基于 Facelet 的 XHTML 页面定义备用后缀。ViewHandler.FACELETS_SUFFIX_PARAM_NAME有关完整规范的符号常量,请参见 javadocs 。

  • javax.faces.FACELETS_VIEW_MAPPINGS-- 如果设置了此参数,则运行时必须将其解释为分号 (;) 分隔的字符串列表,用于强制声明应用程序中的某些页面必须解释为使用 Facelets,无论其扩展名如何。运行时还必须将facelets.VIEW_MAPPINGS 参数名称视为此参数名称的别名,以便与现有的 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")的表示返回,则任何实现都必须采取以下附加操作。如果上下文参数值为 (忽略大小写),则返回零长度调用 ,并以null作为当前提交的值继续处理StringtrueUIInput.validate()javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULLtrueUIInput.getSubmittedValue()StringUIInput.setSubmittedValue(null)

  • javax.faces.LIFECYCLE_IDLifecycle--处理此 Web 应用程序的 JSF 请求时要使用的实例的生命周期标识符。如果未指定,则 LifecycleFactory.DEFAULT_LIFECYCLE必须使用由 标识的 JSF 默认实例。

  • javax.faces.PARTIAL_STATE_SAVING--ServletContext运行时参考的init参数,以确定是否应该使用部分状态保存机制。如果未定义,则运行时必须确定应用程序的版本级别。

    • 对于 1.2 及以下版本的应用程序,运行时不得使用部分状态保存机制。
    • 对于 2.0 及以上版本的应用程序,运行时必须使用部分状态保存机制。

如果定义了此参数,并且应用程序的版本为 1.2 及以下,则运行时不得使用部分状态保存机制。否则,如果定义了此参数,并且调用 其值toLowerCase().equals("true")的表示返回,则运行时必须使用部分状态机制。否则不得使用部分状态保存机制。Stringtrue

  • javax.faces.PROJECT_STAGE-- 一个人类可读的字符串,描述此特定 JSF 应用程序在软件开发生命周期中的位置。有效值为“<code>Development”、“<code>UnitTest”、“<code>SystemTest”或“<code>Production”,对应于类的枚举常量 javax.faces.application.ProjectStage。也可以通过 JNDI 设置此值。请参阅 .java 文档Application.getProjectStage()

  • javax.faces.STATE_SAVING_METHOD-- 保存状态信息的位置。有效值为“<code>server”(通常保存在 中HttpSession)和“<code>client”(通常保存为后续表单提交中的隐藏字段)。如果未指定,则必须使用默认值“<code>server”。

  • javax.faces.VALIDATE_EMPTY_FIELDS-- 如果设置了这个参数,并且调用 它的值toLowerCase().equals("true")的表示返回,所有提交的字段都将被验证。这对于允许模型验证器决定在当前应用程序中是否允许空值或空值是必要的。如果值为,则不会将 null 或空值传递给验证器。如果值为字符串“<code>auto”,则运行时必须检查当前环境中是否存在 JSR-303 Beans Validation。如果是这样,则运行时必须像已指定值“<code>true”一样继续进行。如果当前环境中不存在 JSR-303 Beans Validation,则运行时将继续进行,就像指定了值“<code>false”一样。如果未设置参数,系统必须表现得好像参数设置了值“<code>Stringtruefalse

  • javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR-- 如果设置了此参数,并且调用 其值toLowerCase().equals("true")的表示返回,则运行时不得自动将 validator-id 等于符号常量值的验证器添加到 默认验证器列表中。将此参数设置为 true 将具有禁用 Bean Validation 自动安装到应用程序中每个视图中的每个输入组件的效果,但仍然可以手动安装。Stringtruejavax.faces.validator.VALIDATOR_ID

JSF 实现可以选择支持额外的配置参数,以及自定义 JSF 实现的额外机制;但是,依赖这些工具的应用程序将不能移植到其他 JSF 实现。

正如您在最后一段中所读到的,JSF 实现也可能有自己的一组上下文参数。对于com.sun.faces.本博客中列出的以 Mojarra 开头的 Mojarra:哪些 Mojarra 上下文参数可用?对于以它们开头的 MyFaces,org.apache.myfaces.它们也列在他们自己的网站上:MyFaces 文档 - Web Context Parameters

于 2013-06-27T11:29:45.990 回答