Overview of all JSF-related web.xml context parame

2019-01-10 02:51发布

问题:

There are several JavaServer Faces <context-param> in web.xml: facelets.REFRESH_PERIOD, facelets.DEVELOPMENT, facelets.SKIP_COMMENTS etc. Where I can find a complete list of all those params?

回答1:

First of all, those starting with facelets. are not JSF context parameters, but Facelets 1.x context parameters. Previously, during JSF 1.x era, Facelets was not integrated as part of JSF. However, since JSF 2.0, Facelets is integrated as part of JSF, replacing legacy JSP as the default view technology, and most of the Facelets 1.x context parameters were remapped to JSF 2.x context parameters.

The real JSF context parameter names start with javax.faces.. They are listed in chapter 11.1.3 of the JSF specification. Here's an extract of relevance from the JSF 2.0 specification:

11.1.3 Application Configuration Parameters

Servlet containers support application configuration parameters that may be customized by including <context-param> elements in the web application deployment descriptor. All JSF implementations are required to support the following application configuration parameter names:

  • javax.faces.CONFIG_FILES -- Comma-delimited list of context-relative resource paths under which the JSF implementation will look for application configuration resources (see Section 11.4.4 “Application Configuration Resource Format”), before loading a configuration resource named “/WEB-INF/faces-config.xml” (if such a resource exists). If “/WEB-INF/faces-config.xml” is present in the list, it must be ignored.

  • javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE -- If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, Application.createConverter() must guarantee that the default for the timezone of all javax.faces.convert.DateTimeConverter instances must be equal to TimeZone.getDefault() instead of “GMT”.

  • javax.faces.DEFAULT_SUFFIX -- Allow the web application to define an alternate suffix for JSP pages containing JSF content. See the javadocs for the symbolic constant ViewHandler.DEFAULT_SUFFIX_PARAM_NAME for the complete specification.

  • javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER -- If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, the default ViewHandler must behave as specified in the latest 1.2 version of this specification. Any behavior specified in Section 7.5 “ViewHandler” and implemented in the default ViewHandler that pertains to handling requests for pages authored in the JavaServer Faces View Declaration Language must not be executed by the runtime.

  • javax.faces.FACELETS_LIBRARIES -- If this param is set, the runtime must interpret it as a semicolon (;) separated list of paths, starting with “/” (without the quotes). The runtime must interpret each entry in the list as a path relative to the web application root and interpret the file found at that path as a facelet tag library, conforming to the schema declared in Section 1.1 “XML Schema Definition for Application Configuration Resource file”and expose the tags therein according to Section 10.3.2 “Facelet Tag Library mechanism”. The runtime must also consider the facelets.LIBRARIES param name as an alias to this param name for backwards compatibility with existing facelets tag libraries.

  • javax.faces.FACELETS_BUFFER_SIZE -- The buffer size to set on the response when the ResponseWriter is generated. By default the value is -1, which will not assign a buffer size on the response. This should be increased if you are using development mode in order to guarantee that the response isn't partially rendered when an error is generated. The runtime must also consider the facelets.BUFFER_SIZE param name as an alias to this param name for backwards compatibility with existing facelets tag libraries.

  • javax.faces.DECORATORS -- A semicolon (;) delimitted list of class names of type javax.faces.view.facelets.TagDecorator, with a no-argument constructor. These decorators will be loaded when the first request for a Facelets VDL view hits the ViewHandler for page compilation.The runtime must also consider the facelets.DECORATORS param name as an alias to this param name for backwards compatibility with existing facelets tag libraries.

  • javax.faces.FACELETS_REFRESH_PERIOD -- When a page is requested, what interval in seconds should the compiler check for changes. If you don't want the compiler to check for changes once the page is compiled, then use a value of -1. Setting a low refresh period helps during development to be able to edit pages in a running application.The runtime must also consider the facelets.REFRESH_PERIOD param name as an alias to this param name for backwards compatibility with existing facelets tag libraries.

  • javax.faces.FACELETS_RESOURCE_RESOLVER -- If this param is set, the runtime must interpret its value as a fully qualified classname of a java class that extends javax.faces.view.facelets.ResourceResolver and has a zero argument public constructor or a one argument public constructor where the type of the argument is ResourceResolver. If this param is set and its value does not conform to those requirements, the runtime must log a message and continue. If it does conform to these requirements and has a one-argument constructor, the default ResourceResolver must be passed to the constructor. If it has a zero argument constructor it is invoked directly. In either case, the new ResourceResolver replaces the old one. The runtime must also consider the facelets.RESOURCE_RESOLVER param name as an alias to this param name for backwards compatibility with existing facelets tag libraries.

  • javax.faces.FACELETS_SKIP_COMMENTS -- If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, the runtime must ensure that any XML comments in the Facelets source page are not delivered to the client. The runtime must also consider the facelets.SKIP_COMMENTS param name as an alias to this param name for backwards compatibility with existing facelets tag libraries.

  • javax.faces.FACELETS_SUFFIX -- Allow the web application to define an alternate suffix for Facelet based XHTML pages containing JSF content. See the javadocs for the symbolic constant ViewHandler.FACELETS_SUFFIX_PARAM_NAME for the complete specification.

  • javax.faces.FACELETS_VIEW_MAPPINGS -- If this param is set, the runtime must interpret it as a semicolon (;) separated list of strings that is used to forcibly declare that certain pages in the application must be interpreted as using Facelets, regardless of their extension. The runtime must also consider the facelets.VIEW_MAPPINGS param name as an alias to this param name for backwards compatibility with existing facelets applications. See the javadocs for the symbolic constant ViewHandler.FACELETS_VIEW_MAPPINGS_PARAM_NAME for the complete specification.

  • javax.faces.FULL_STATE_SAVING_VIEW_IDS -- The runtime must interpret the value of this parameter as a comma separated list of view IDs, each of which must have their state saved using the state saving mechanism specified in JSF 1.2.

  • javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL -- If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, any implementation of UIInput.validate() must take the following additional action. If the javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL context parameter value is true (ignoring case), and UIInput.getSubmittedValue() returns a zero-length String call UIInput.setSubmittedValue(null) and continue processing using null as the current submitted value

  • javax.faces.LIFECYCLE_ID -- Lifecycle identifier of the Lifecycle instance to be used when processing JSF requests for this web application. If not specified, the JSF default instance, identified by LifecycleFactory.DEFAULT_LIFECYCLE, must be used.

  • javax.faces.PARTIAL_STATE_SAVING --The ServletContext init parameter consulted by the runtime to determine if the partial state saving mechanism should be used. If undefined, the runtime must determine the version level of the application.

    • For applications versioned at 1.2 and under, the runtime must not use the partial state saving mechanism.
    • For applications versioned at 2.0 and above, the runtime must use the partial state saving mechanism.

    If this parameter is defined, and the application is versioned at 1.2 and under, the runtime must not use the partial state saving mechanism. Otherwise, If this param is defined, and calling toLowerCase().equals("true") on a String representation of its value returns true, the runtime must use partial state mechanism. Otherwise the partial state saving mechanism must not be used.

  • javax.faces.PROJECT_STAGE -- A human readable string describing where this particular JSF application is in the software development lifecycle. Valid values are “Development”, “UnitTest”, “SystemTest”, or “Production”, corresponding to the enum constants of the class javax.faces.application.ProjectStage. It is also possible to set this value via JNDI. See the javadocs for Application.getProjectStage().

  • javax.faces.STATE_SAVING_METHOD -- The location where state information is saved. Valid values are “server” (typically saved in HttpSession) and “client” (typically saved as a hidden field in the subsequent form submit). If not specified, the default value “server” must be used.

  • javax.faces.VALIDATE_EMPTY_FIELDS -- If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, all submitted fields will be validated. This is necessary to allow the model validator to decide whether null or empty values are allowable in the current application. If the value is false, null or empty values will not be passed to the validators. If the value is the string “auto”, the runtime must check if JSR-303 Beans Validation is present in the current environment. If so, the runtime must proceed as if the value “true” had been specified. If JSR-303 Beans Validation is not present in the current environment, the runtime most proceed as if the value “false” had been specified. If the param is not set, the system must behave as if the param was set with the value “auto”.

  • javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR -- If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, the runtime must not automatically add the validator with validator-id equal to the value of the symbolic constant javax.faces.validator.VALIDATOR_ID to the list of default validators. Setting this parameter to true will have the effect of disabling the automatic installation of Bean Validation to every input component in every view in the application, though manual installation is still possible.

JSF implementations may choose to support additional configuration parameters, as well as additional mechanisms to customize the JSF implementation; however, applications that rely on these facilities will not be portable to other JSF implementations.

As you can read in the last paragraph, JSF implementations may also have their own set of context parameters. For Mojarra that are the ones starting with com.sun.faces. which are listed on this blog: What Mojarra context parameters are available? For MyFaces that are the ones starting with org.apache.myfaces. which are also listed on their own site: MyFaces documentation - Web Context Parameters.