1. About the Documentation

The documentation of JoinFaces master-SNAPSHOT consists of two parts:

  • This Reference Guide

  • The Javadoc API

The latest copy of the user guide is available at docs.joinfaces.org/current/reference
and the corresponding javadocs can be found at docs.joinfaces.org/current/api.

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.

All of JoinFaces is open source, including this documentation. The source can be found on GitHub.

2. Getting Started

JoinFaces enables JSF usage inside Spring Boot Applications.

If you’re not familiar with Spring Boot, you should read its Getting Started guide first.
Table 1. Official example projects
Build tool \ packaging jar war

Maven

maven-jar-example

maven-war-example

Gradle

gradle-jar-example

gradle-war-example

2.1. System Requirements

Unless otherwise noted, JoinFaces has the same system requirements as Spring Boot 2.2.2.RELEASE.

When using Java 9 or higher, make sure to use JoinFaces only on the classpath and not on the modulepath.

2.2. Dependency Management

Each release of JoinFaces provides a curated list of dependencies that it supports. This list is an extension of Spring Boot’s dependency management and therefore works exactly the same way.

The joinfaces-dependencies BOM also imports the spring-boot-dependencies BOM. If you want to override the imported Spring Boot version, make sure to specify the Spring Boot BOM after the JoinFaces one.

The complete list of managed versions can befound in the appendix Dependency versions.

2.3. Maven

Please also consult the official Spring Boot documentation: Link
<project>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <joinfaces.version>master-SNAPSHOT</joinfaces.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.joinfaces</groupId>
                <artifactId>joinfaces-dependencies</artifactId>
                <version>${joinfaces.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.joinfaces</groupId>
            <artifactId>jsf-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.joinfaces</groupId>
                    <artifactId>joinfaces-maven-plugin</artifactId>
                    <version>${joinfaces.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>classpath-scan</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.joinfaces</groupId>
                <artifactId>joinfaces-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.4. Gradle

Please also consult the official Spring Boot documentation: Link
plugins {
    id 'org.joinfaces' version 'master-SNAPSHOT'
}
apply plugin: 'java' //or 'war'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

dependencies {
    compile 'org.joinfaces:jsf-spring-boot-starter'

    testCompile 'org.springframework.boot:spring-boot-starter-test'
}

2.4.1. Not using the JoinFaces gradle plugin

plugins {
    id 'org.springframework.boot' version '2.2.2.RELEASE'
}
apply plugin: 'java' //or 'war'
apply plugin: 'io.spring.dependency-management'

dependencyManagement {
    imports {
        mavenBom 'org.joinfaces:joinfaces-dependencies:master-SNAPSHOT'
    }
}

dependencies {
    compile 'org.joinfaces:jsf-spring-boot-starter'

    testCompile 'org.springframework.boot:spring-boot-starter-test'
}

3. JoinFaces Features

3.1. Starters

There are many JoinFaces Starters available: six basic starters, meta starter, security starter, component starters, theme starter and extra starter.

While most of the starters can be combined, some starters are mutually exclusive:

  • tomcat-spring-boot-starter, jetty-spring-boot-starter and undertow-spring-boot-starter

  • mojarra-spring-boot-starter and myfaces-spring-boot-starter

  • omnifaces1-spring-boot-starter and omnifaces3-spring-boot-starter

You can use the table below to discover the starters that fit your needs.

Table 2. JoinFaces starters
Starter Description

tomcat-spring-boot-starter

Basic starter for Tomcat servlet container.

jetty-spring-boot-starter

Basic starter for Jetty servlet container.

undertow-spring-boot-starter

Basic starter for Undertow servlet container.

mojarra-spring-boot-starter

Basic starter for Mojarra JSF implementation.

myfaces-spring-boot-starter

Basic starter for MyFaces JSF implementation.

weld-spring-boot-starter

Basic starter for Weld CDI Reference Implementation.

jsf-spring-boot-starter

Meta starter that pulls tomcat-spring-boot-starter and mojarra-spring-boot-starter.

security-spring-boot-starter

Security starter. Pulls jsf-spring-boot-starter, spring-boot-starter-security and joinfaces-security-taglib.

primefaces-spring-boot-starter

Component starter for PrimeFaces, and PrimeFaces Extensions JSF Component libraries. Pulls jsf-spring-boot-starter.

bootsfaces-spring-boot-starter

Component starter for BootsFaces JSF Component library. Pulls jsf-spring-boot-starter.

butterfaces-spring-boot-starter

Component starter for ButterFaces JSF Component library. Pulls jsf-spring-boot-starter.

icefaces-spring-boot-starter

Component starter for IceFaces JSF Component library. Pulls jsf-spring-boot-starter.

richfaces-spring-boot-starter

Component starter for RichFaces JSF Component library. Pulls jsf-spring-boot-starter.

angularfaces-spring-boot-starter

Component starter for AngularFaces JSF Component library. Pulls jsf-spring-boot-starter.

omnifaces1-spring-boot-starter

Component starter for OmniFaces JSF utility library. Pulls jsf-spring-boot-starter.

omnifaces3-spring-boot-starter

Component starter for OmniFaces JSF utility library. Pulls jsf-spring-boot-starter and weld-spring-boot-starter.

adminfaces-spring-boot-starter

Template and Theme starter for AdminFaces. Pulls primefaces-spring-boot-starter.

rewrite-spring-boot-starter

Extra starter for Ocpsoft Rewrite URL Rewriting Tool.

3.1.1. Not using Tomcat or Mojarra

The jsf-spring-boot-starter pulls tomcat and mojarra as defaults. If you want to change this, you have to exclude one starter and pull another one instead.

The principle behind this is the same as described here:

Example: Using MyFaces instead of Mojarra
<dependencies>
    <dependency>
        <groupId>org.joinfaces</groupId>
        <artifactId>jsf-spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.joinfaces</groupId>
                <artifactId>mojarra-spring-boot-starter</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.joinfaces</groupId>
        <artifactId>myfaces-spring-boot-starter</artifactId>
    </dependency>
</dependencies>
dependencies {
    compile ("org.joinfaces:jsf-spring-boot-starter") {
        exclude module: "mojarra-spring-boot-starter"
    }
    compile "org.joinfaces:myfaces-spring-boot-starter"
    // ...
}

3.2. Servlet-Context Init-Parameters

JSF implementations and JSF component libraries are usually configured using servlet context init parameters in web.xml:

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>omega</param-value>
</context-param>

Spring Boot based applications — especially when using jar-packaging — usually don’t have a web.xml file. Therefore JoinFaces maps these options to Spring Boot properties:

joinfaces.jsf.project-stage=development
joinfaces.primefaces.theme=omega

The full list of all properties can be found in the chapter Configuration Properties.

Most of these properties default to null, so the corresponding parameter isn’t set to the servlet-context. This allows the underlying library to use their own default behaviour.

If you need a to set a parameter which isn’t specially handled by JoinFaces, you can still set it using this generic way:

server.servlet.context-parameters.javax.faces.PROJECT_STAGE=Development
server.servlet.context-parameters.primefaces.THEME=omega

3.3. Library Specific Features

This section describes, what JoinFaces does for specific libraries.

3.3.1. AdminFaces

  • Configurations are mapped from the joinfaces.adminfaces.* properties.

  • Spring Component scan for selected com.github.adminfaces.template.*-packages.

  • primefaces.THEME is set to admin.

  • primefaces.FONT_AWESOME is set to true.

3.3.2. AngularFaces

  • AngularFaces.* servlet-context init-parameters are mapped from joinfaces.angularfaces.* properties.

  • AngularTagDecorator is added to javax.faces.FACELETS_DECORATORS.

3.3.3. BootsFaces

  • net.bootsfaces.* servlet-context init-parameters are mapped from joinfaces.bootsfaces.* properties.

3.3.4. ButterFaces

  • org.butterfaces.* servlet-context init-parameters are mapped from joinfaces.butterfaces.* properties.

  • net.bootsfaces.get_jquery_from_cdn is set to true.

3.3.5. ICEfaces

  • org.icefaces.* servlet-context init-parameters are mapped from joinfaces.icefaces.* properties.

  • The scope window is added to the spring context, which is backend by org.icefaces.impl.application.WindowScopeManager.

  • ICEfaces META-INF/core.tld is re-implemented as ServletContextInitializer for the embedded Undertow.

3.3.6. Mojarra

  • com.sun.faces.* servlet-context init-parameters are mapped from joinfaces.mojarra.* properties.

  • com.sun.faces.config.FacesInitializer is executed for embedded servlet containers.

3.3.7. MyFaces

  • org.apache.myfaces.* servlet-context init-parameters are mapped from joinfaces.myfaces.* properties.

  • org.apache.myfaces.ee.MyFacesContainerInitializer is executed for embedded servlet containers.

  • org.apache.myfaces.webapp.StartupServletContextListener is registered for embedded servlet containers.

  • A org.apache.myfaces.spi.AnnotationProvider implementation is provided for embedded servlet containers which reuses the classpath-scan results from MyFacesContainerInitializer.

3.3.8. OmniFaces

  • org.omnifaces.* servlet-context init-parameters are mapped from joinfaces.omnifaces.* properties.

  • org.omnifaces.facesviews.FacesViewsInitializer or org.omnifaces.ApplicationInitializer are executed for embedded servlet containers.

3.3.9. PrimeFaces

  • primefaces.* servlet-context init-parameters are mapped from joinfaces.primefaces.* properties.

3.3.10. Rewrite

  • org.ocpsoft.rewrite.* servlet-context init-parameters are mapped from joinfaces.rewrite.* properties.

  • Rewrites META-INF/web-fragment.xml is re-implemented as ServletContextInitializer for embedded servlet containers.

  • Spring Boot specific implementations for the following SPIs are provided:

    • org.ocpsoft.rewrite.el.spi.BeanNameResolver

    • org.ocpsoft.rewrite.el.spi.ExpressionLanguageProvider

    • org.ocpsoft.common.spi.ServiceLocator

  • Annotation scanning for none-WARs can be enabled. Make sure to define packages to scan for to decrease the statup time.

joinfaces.rewrite.scan-classpath=true
joinfaces.rewrite.base-packages=package.with.annotated.components

Be careful when using Rewrite in combination with Spring Security:

  • When Rewrite is running after the springSecurityFilterChain (the default behaviour) you need to secure both the rewritten and the original path.

  • When Rewrite is running before the springSecurityFilterChain, the latter will not see the request at all. (The springSecurityFilterChain doesn’t handle FORWARD requests in the default configuration)

3.3.11. RichFaces

  • org.richfaces.* servlet-context init-parameters are mapped from joinfaces.richfaces.* properties.

  • org.richfaces.webapp.ServletsInitializer is executed for embedded servlet containers.

3.3.12. Weld

  • org.jboss.weld.environment.servlet.EnhancedListener is executed for embedded servlet containers.

3.4. JSF and CDI scope-annotations support

JSF and CDI scope-annotations are automatically supported.

The following annotations can be used to define the scope of Spring beans:

3.4.2. New JSF Scope annotation (JSF >= 2.2)

3.4.3. Old JSF Scope annotations (JSF ⇐ 2.1)

The following annotations are only supported for backwards compatibility. New applications should only use the annotations above.

3.4.4. CDI Annotations

3.5. Spring Security JSF Facelet Tag support

JoinFaces enables Spring Security JSF Facelet Tag support in order to secure JSF pages. It will work if Spring Security is present at classpath.

Table 3. Spring Security JSF Facelet Tags
Tag Description

authorize

perform Spring Security authorization decisions, using attributes: ifAnyGranted, ifAllGranted, ifNotGranted, access, url, method, var.

anonymous

verify if the user is anonymous.

authenticated

verify if the user is not anonymous.

fullyAuthenticated

verify if the is not an anonymous or a remember-me user.

Table 4. Spring Security JSF Facelet Functions
Function Description

areAllGranted

returns true if the user has all of of the given authorities.

areAnyGranted

returns true if the user has any of the given authorities.

areNotGranted

returns true if the user does not have any of the given authorities.

isAllowed

returns true if the user is allowed to access the given URL and HTTP method combination.

isAnonymous

returns true if user is anonymous.

isAuthenticated

returns true if the user is not anonymous.

isFullyAuthenticated

returns true if the is not an anonymous or a remember-me user.

Spring Web Flow has similar feature. JoinFaces Spring Security JSF Facelet Tag has different tags and functions signatures, does not requires additional configuration nor require Spring Web Flow.

4. Build Tools integration

4.1. Maven Plugin

JoinFaces provides org.joinfaces:joinfaces-maven-plugin Maven plugin to configure a classpath scan at build-time in order to reduce the startup time of applications which use an embedded servlet container.

If you have any problems with the classpath scan, you can remove it from plugin section in your pom.xml or disable it:

-Djoinfaces.skip=true

4.2. Gradle Plugin

JoinFaces provides some Gradle plugins to simplify the development.

When using the JoinFaces Gradle plugins, you might want to use the Spring Boot gradle plugin, too.

4.2.1. org.joinfaces

The org.joinfaces plugin is the main plugin. It does nothing on it’s own, but conditionally applies the other plugin in reaction to the plugins present in the project.

If defaults in the org.joinfaces plugin don’t work for you, you can just include the sub-plugins you need instead.

4.2.2. org.joinfaces.dependency-management

This plugin is applied by the main plugin if the io.spring.dependency-management plugin is applied to the current project. If this plugin is applied directly it will apply the io.spring.dependency-management itself.

In both cases it configures the dependency management plugin to use the JoinFaces Dependency Management.

This is similar to what the Spring Boot Gradle plugin does.

4.2.3. org.joinfaces.classpath-scan

This plugin configures a classpath scan at build-time in order to reduce the startup time of applications which use an embedded servlet container.

For each source-set the runtimeClasspath configuration and the output of the compile tasks for java, groovy, scala and kotlin will be scanned.

If you have any problems with the classpath scan, you can disable it:

scanClasspath.enabled = false

5. 'How-to' guides and FAQs

5.1. Traditional war deployment

JoinFaces can be used in traditional web applications which are deployed to an existing servlet-container.

  1. Create a deployable war file as descibed in the Spring Boot Reference Guide.

  2. Mark all dependencies as provided which will be provided by the server you are deploying to. (Keep in mind that full Java-EE servers like Glassfish or WebLogic already provide a JSF implementation and other Java-EE related libraries which the joinfaces starters have to pull in for embeddede containers.)

  3. The Servlet and ServletFilter configurations through joinfaces.faces-servlet and joinfaces.rewrite.filter will not work correctly. You can configure those in the traditional way in web.xml if you need to.

5.2. Internationalization and Resources Bundles

JoinFaces based applications can use two different mechanisms for internationalization, which can be mixed up easily.

  1. JSF <resource-bundle>

  2. Spring MessageSource

We recommend to only use one of the mechanisms in order to avoid confusion. If you want to or have to use both anyways, keep in mind that these are different API’s which have to be configured differently and might behave slightly different.

5.2.1. JSF <resource-bundle>

JSF resource bundles work the same way in JoinFaces as they would in a plain JSF application.

Just declare the resources bundle in your faces-config.xml:

    <application>
        <resource-bundle>
            <base-name>messages</base-name>
            <var>msg</var>
        </resource-bundle>
    </application>

Doing so, allows you to access your messages like this: #{msg['foo.bar']}

The properties files of the resource bundle have to be ISO-8859-1 encoded.

5.2.2. Spring MessageSource

As second option, Spring’s own internationalization infrastructure (the MessageSource-API) can be used.

JoinFaces exposes the Spring MessageSource as Map through the sms bean, so it can be easily used from JSF EL: #{sms['my.message.key']}.

The MessageSource which is auto-configured by Spring Boot uses UTF-8 by default. This can be changed through the spring.messages.encoding property.

Appendix A: Configuration Properties

This appendix contains a alphabetical list of all properties handled by JoinFaces.

The properties already supported by Spring Boot itself aren’t listed here again. They can be found in the corresponding chapter of the Spring Boot Reference Guide.
## joinfaces.adminfaces
joinfaces.adminfaces.auto-hide-messages= # If true PrimeFaces info messages will be hidden after a certain timeout.
joinfaces.adminfaces.auto-show-navbar= # Automatic shows navbar when users scrolls page up (on small screens).
joinfaces.adminfaces.breadcrumb-size= # Number of breadcrumbs to queue before removing the older ones.
joinfaces.adminfaces.date-format= # Date format used in error page (500.xhtml), by default it is JVM default format.
joinfaces.adminfaces.disable-filter= # Disables AdminFilter, responsible for redirecting user after session timeout, sending user to logon page when it is not logged in among other things.
joinfaces.adminfaces.enable-ripple= # When true it will create a wave/ripple effect on elements specified by rippleElements.
joinfaces.adminfaces.enable-slide-menu= # If true will make left menu touch enable (can be closed or opened via touch).
joinfaces.adminfaces.extension-less-urls= # Removes extension suffix from breadCrumb links.
joinfaces.adminfaces.icons-effect= # Enables material effect when icons (e.g modal close, calendar) are clicked.
joinfaces.adminfaces.ignored-resources= # Comma separated resources (pages or urls) to be skiped by AdminFilter.
joinfaces.adminfaces.index-page= # index page location.
joinfaces.adminfaces.loading-image= # image used for the loading popup.
joinfaces.adminfaces.login-page= # login page location (relative to webapp).
joinfaces.adminfaces.messages-hide-timeout= # Timeout to hide info messages.
joinfaces.adminfaces.render-ajax-status= # When false ajaxStatus, which triggers the loading bar on every ajax request, will not be rendered.
joinfaces.adminfaces.render-bread-crumb= # When false, the breadCrumb component, declared in admin template, will not be rendered.
joinfaces.adminfaces.render-control-sidebar= # When true it will activate control sidebar component.
joinfaces.adminfaces.render-menu-search= # Enables or disables menu search.
joinfaces.adminfaces.render-messages= # When false, p:messages defined in admin template will not be rendered.
joinfaces.adminfaces.ripple-elements= # A list of comma separated list of (jquery) selector which elements will be affected by ripple effect.
joinfaces.adminfaces.ripple-mobile-only= # When true the ripple effect will be enabled only on mobile (small) screens.
joinfaces.adminfaces.skin= # Default template skin.
joinfaces.adminfaces.template-path= # Template path.

## joinfaces.adminfaces.control-sidebar
joinfaces.adminfaces.control-sidebar.boxed-layout= # Boxed layout.
joinfaces.adminfaces.control-sidebar.dark-skin= # Changes control sidebar skin between dark and light.
joinfaces.adminfaces.control-sidebar.expand-on-hover= # When true left sidebar will expand on mouse hover.
joinfaces.adminfaces.control-sidebar.fixed= # When true control sidebar will be fixed on the page.
joinfaces.adminfaces.control-sidebar.fixed-layout= # Toggles fixed layout where navbar is fixed on the page.
joinfaces.adminfaces.control-sidebar.left-menu-template= # Switches layout between left (default) and top menu.
joinfaces.adminfaces.control-sidebar.show-on-mobile= # When true control sidebar will be also rendered on mobile devices.
joinfaces.adminfaces.control-sidebar.sidebar-collapsed= # When true left sidebar will be collapsed.

## joinfaces.angularfaces
joinfaces.angularfaces.add-labels=
joinfaces.angularfaces.add-messages=
joinfaces.angularfaces.client-side-messages=
joinfaces.angularfaces.include-angular-js=
joinfaces.angularfaces.include-angular-messages=
joinfaces.angularfaces.include-j-query=
joinfaces.angularfaces.include-j-query-ui=
joinfaces.angularfaces.include-main-js=
joinfaces.angularfaces.translation=

## joinfaces.bootsfaces
joinfaces.bootsfaces.block-ui= # Activates the waitcursor and the double-click protection.
joinfaces.bootsfaces.get-bootstrap-from-cdn= # Allows you to provide your own Bootstrap CSS file.
joinfaces.bootsfaces.get-fontawesome-from-cdn= # deactivate FontAwesome support if the no-fa facet is found in the h:head tag.
joinfaces.bootsfaces.get-jquery-from-cdn= # Allows you to provide your own jQuery file.
joinfaces.bootsfaces.get-jqueryui-from-cdn= # Allows you to provide your own jQueryUI file.
joinfaces.bootsfaces.theme= # BootsFaces_THEME - controls the Theme to use: the value "default" is plain Bootstrap, the other options are a Bootswach Theme name (lowercase) or "custom".
joinfaces.bootsfaces.use-viewport=
joinfaces.bootsfaces.usetheme= # BootsFaces_USETHEME - as in previous versions controls if the current theme is to be rendered in the Flat variant (default) or in its Enhanced variant, with shadows and decorations turned on.

## joinfaces.bootsfaces.defaults
joinfaces.bootsfaces.defaults.decorator=
joinfaces.bootsfaces.defaults.render-label= # May contain EL.

## joinfaces.butterfaces
joinfaces.butterfaces.ajax-disable-render-regions-on-request= # b:commandLink components comes with ajaxDisableRenderRegionsOnRequest to crossfade render regions while ajax request is running.
joinfaces.butterfaces.ajax-processing-glyphicon-on-request=
joinfaces.butterfaces.ajax-processing-text-on-request=
joinfaces.butterfaces.auto-trim-input-fields= # By default all input fields will be trimed after submit.
joinfaces.butterfaces.max-length-text= # When using maxlength parameter counting text will be {0} of {1} characters.
joinfaces.butterfaces.no-entries-text= # b:tree and b:treeBox are trivial components and can be configured by components attribute or by changeing following parameters.
joinfaces.butterfaces.provide-bootstrap= # As default ButterFaces comes with an actual version of Bootstrap 3.x.
joinfaces.butterfaces.provide-j-query= # As default ButterFaces comes with an actual version of jQuery 2.x.
joinfaces.butterfaces.spinner-text= # b:tree and b:treeBox are trivial components and can be configured by components attribute or by changeing following parameters.
joinfaces.butterfaces.use-compressed-resources= # Each components comes up with it's own javascript and css resources.

## joinfaces.butterfaces.glyphicon
joinfaces.butterfaces.glyphicon.collapsing=
joinfaces.butterfaces.glyphicon.expansion=
joinfaces.butterfaces.glyphicon.options=
joinfaces.butterfaces.glyphicon.refresh=

## joinfaces.butterfaces.glyphicon.order
joinfaces.butterfaces.glyphicon.order.left=
joinfaces.butterfaces.glyphicon.order.right=

## joinfaces.butterfaces.glyphicon.sort
joinfaces.butterfaces.glyphicon.sort.ascending=
joinfaces.butterfaces.glyphicon.sort.descending=
joinfaces.butterfaces.glyphicon.sort.none=

## joinfaces.butterfaces.integration

## joinfaces.butterfaces.integration.primefaces
joinfaces.butterfaces.integration.primefaces.disable-j-query= # As well as ButterFaces PrimeFaces comes with jQuery.

## joinfaces.butterfaces.treebox
joinfaces.butterfaces.treebox.show-clear-button=

## joinfaces.faces-servlet
# Configures the FacesServlet handled by JoinFaces.
joinfaces.faces-servlet.async-supported=true
joinfaces.faces-servlet.enabled=true # If the FacesServlet should be actively handled by Joinfaces.
joinfaces.faces-servlet.load-on-startup=-1
joinfaces.faces-servlet.name=FacesServlet
joinfaces.faces-servlet.order=0 # The order-property for the ServletRegistrationBean.
joinfaces.faces-servlet.url-mappings=/faces/*,*.jsf,*.faces,*.xhtml

## joinfaces.icefaces
joinfaces.icefaces.autoid= # Setting org.icefaces.autoid to true causes the majority of standard JSF components to write their IDs to the page.
joinfaces.icefaces.block-ui-on-submit= # Setting org.icefaces.blockUIOnSubmit to true tells ICEfaces that the user interface (UI) should block any subsequent requests until the current request has been processed.
joinfaces.icefaces.client-side-element-update-determination= # Applications or components that use ice.onElementUpdate javascript registration function can choose to use server or client side implementation for the callback matching of the elements that were updated or removed from the document.
joinfaces.icefaces.coalesce-resources= # Setting org.icefaces.coalesceResources to true indicates to the ICEfaces core framework that the resources required by the rendered components are to be coalesced.
joinfaces.icefaces.compress-dom= # Setting org.icefaces.compressDOM to true indicates to the ICEfaces core framework that the server-side DOM representation of the current view should be serialized and compressed between requests.
joinfaces.icefaces.compress-resources= # By default, ICEfaces will not gzip compress any resource responses.
joinfaces.icefaces.connection-lost-redirect-uri= # Setting org.icefaces.connectionLostRedirectURI to a valid URI tells ICEfaces that when the Ajax Push connection is lost, that the client is to be redirected to the specified page.
joinfaces.icefaces.delta-submit= # Setting org.icefaces.deltaSubmit to true tells ICEfaces that form submission should be handled in a special way to minimize what is sent across the wire.
joinfaces.icefaces.disable-default-error-popups= # This parameter can be used to disable the popups rendered by default when a network error, session expiry or server error occurs.
joinfaces.icefaces.fetch-pending-notifications-on-load= # The default value of true for org.icefaces.fetchPendingNotificationsOnLoad indicates that whenever the blocking connection switches over to another window each window will issue a request for the updates that were potentially issued during the switch.
joinfaces.icefaces.focus-managed= # By default, when ICEfaces is available, focus retention will ensure that the focused element in the page preserves its focus when the partial update modified the element.
joinfaces.icefaces.generate-head-update= # This parameter can be used to enable (or disable) successful update of the HTML head element.
joinfaces.icefaces.lazy-push= # By default, when using Ajax Push, the feature is activated in a lazy fashion.
joinfaces.icefaces.lazy-window-scope= # By default, when using window-scoped beans, the window management is activated in a lazy fashion.
joinfaces.icefaces.mandatory-resource-configuration= # The org.icefaces.mandatoryResourceConfiguration context-parameter may be set to one of three values: none, all, or a space delimited list of components.
joinfaces.icefaces.message-persistence= # By default, when ICEfaces is available, FacesMessages are persisted across different partial submits from the same page.
joinfaces.icefaces.public-context-path= # Setting org.icefaces.publicContextPath to a valid path tells ICEfaces to replace the natural context path (usually, the web-application name) of all resources, form URLs, local bookmarks and local redirects to the specified path.
joinfaces.icefaces.replay-navigation-on-reload= # This parameter can be used to replay the navigation rules when the page is reloaded.
joinfaces.icefaces.session-expired-redirect-uri= # Setting org.icefaces.sessionExpiredRedirectURI to a valid URI tells ICEfaces that when the user session expires, that the client is to be redirected to the specified page.
joinfaces.icefaces.session-timeout-redirect-uri= # Setting org.icefaces.sessionTimeoutRedirectURII to a valid URI tells ICEfaces that when the user session expires due to user inactivity, that the client is to be redirected to the specified page.
joinfaces.icefaces.standard-form-serialization= # By default, ICEfaces does optimized serialization and submission of form elements based on the element that triggered the submission.
joinfaces.icefaces.strict-session-timeout= # The default value of false for org.icefaces.strictSessionTimeout indicates that ICEfaces should not interfere with container-managed control of session timeout.
joinfaces.icefaces.subtree-diff= # By default, when using ICEfaces, Ajax-specified subtree diffing is always done.
joinfaces.icefaces.unique-resource-urls= # The default value of "true" will cause ICEfaces to append random numbers to certain resource URLs, thereby preventing caching.
joinfaces.icefaces.versionable-types= # By default, ICEfaces adds a version number parameter to the URL of most resource types.
joinfaces.icefaces.warn-before-session-expiry-interval= # A value, in milliseconds, indicating the interval of how much earlier the warning that the session is about to expire is to be issued.
joinfaces.icefaces.window-scope-expiration= # A value, in milliseconds, indicating how long window-scoped values should remain valid in the session after a reload or redirect occurs.

## joinfaces.icefaces.ace
joinfaces.icefaces.ace.gmap-version= # This affects the Google Maps API version used with the ace:gMap component and its subcomponents.

## joinfaces.icefaces.file-entry
joinfaces.icefaces.file-entry.require-javascript= # Setting org.icefaces.ace.fileEntry.requireJavascript to true causes the server side handling of ace:fileEntry file uploads to require that the browser have javascript enabled.

## joinfaces.icefaces.render
joinfaces.icefaces.render.auto= # Setting org.icefaces.render.auto to true causes ICEfaces to automatically apply DOM rendering to each page.

## joinfaces.jetty
joinfaces.jetty.class-path-resource=META-INF/resources # Classpath to find jsf resources Default to META-INF/resources.

## joinfaces.jsf
joinfaces.jsf.always-perform-validation-when-required-is-true= # If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, validation must be performed, even when there is no corresponding value for this component in the incoming request.
joinfaces.jsf.client-window-mode= # The context-param that controls the operation of the {@code ClientWindow} feature.
joinfaces.jsf.config-files= # Comma-delimited list of faces config files.
joinfaces.jsf.datetimeconverter-default-timezone-is-system-timezone= # Controls if DateTimeConverter instances use the system timezone (if true) or GMT (if false).
joinfaces.jsf.default-suffix= # Change the default suffix for JSP views.
joinfaces.jsf.disable-facelet-jsf-viewhandler= # ViewHandler.
joinfaces.jsf.disable-facesservlet-to-xhtml= # The {@code ServletContext} init parameter consulted by the runtime to tell if the automatic mapping of the {@code FacesServlet} to the extension {@code *.xhtml} should be disabled.
joinfaces.jsf.enable-validate-whole-bean= # If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns {@code true} take the additional actions relating to {@code <validateWholeBean />} specified in {@link BeanValidator#validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)}.
joinfaces.jsf.enable-websocket-endpoint= # The boolean context parameter name to explicitly enable web socket endpoint during startup.
joinfaces.jsf.facelets-buffer-size= # The buffer size set on the response.
joinfaces.jsf.facelets-decorators= # TagDecorator implementations.
joinfaces.jsf.facelets-libraries= # Semicolon-separated list of paths to Facelet tag libraries.
joinfaces.jsf.facelets-refresh-period= # Time in seconds that facelets should be checked for changes since last request.
joinfaces.jsf.facelets-resource-resolver= # An implementation of javax.faces.view.facelets.ResourceResolver.
joinfaces.jsf.facelets-skip-comments= # If true, strip XML comments out of Facelets before delivering to the client.
joinfaces.jsf.facelets-suffix= # Set the suffix for Facelet xhtml files.
joinfaces.jsf.facelets-view-mappings= # Semicolon-separated list of Facelet files that don't use the default facelets suffix.
joinfaces.jsf.full-state-saving-view-ids= # Semicolon-separated list of view IDs that must save state using the JSF 1.2-style state saving.
joinfaces.jsf.honor-current-component-attributes= # The {@code ServletContext} init parameter consulted by the {@code UIComponent} to tell whether or not the {@link UIComponent#CURRENT_COMPONENT} and {@link UIComponent#CURRENT_COMPOSITE_COMPONENT} attribute keys should be honored as specified.
joinfaces.jsf.interpret-empty-string-submitted-values-as-null= # If true, consider empty UIInput values to be null instead of empty string.
joinfaces.jsf.lifecycle-id= # ID for alternate Lifecycle implementations.
joinfaces.jsf.partial-state-saving= # If true, use the JSF2 partial state saving for views.
joinfaces.jsf.project-stage= # Set the project stage to "Development", "UnitTest", "SystemTest", or "Production".
joinfaces.jsf.resource-excludes= # A space separated list of resource extensions for types that shouldn't be served by the ResourceHandler implementation.
joinfaces.jsf.separator-char= # The context-param that allows the separator char for clientId strings to be set on a per-web application basis.
joinfaces.jsf.serialize-server-state= # If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, and the javax.faces.STATE_SAVING_METHOD is set to "server" (as indicated below), the server state must be guaranteed to be Serializable such that the aggregate state implements java.io.Serializable.
joinfaces.jsf.state-saving-method= # "server" or "client".
joinfaces.jsf.validate-empty-fields= # If "true", validate null and empty values.
joinfaces.jsf.viewroot-phase-listener-queues-exceptions= # If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, exceptions thrown by {@link PhaseListener}s installed on the {@code UIViewRoot} are queued to the {@link javax.faces.context.ExceptionHandler} instead of being logged and swallowed.
joinfaces.jsf.webapp-contracts-directory= # If a {@code <context-param>} with the param name equal to the value of {@link ResourceHandler#WEBAPP_CONTRACTS_DIRECTORY_PARAM_NAME} exists, the runtime must interpret its value as a path, relative to the web app root, where resource library contracts are to be located.
joinfaces.jsf.webapp-resources-directory= # If a {@code <context-param>} with the param name equal to the value of {@link ResourceHandler#WEBAPP_RESOURCES_DIRECTORY_PARAM_NAME} exists, the runtime must interpret its value as a path, relative to the web app root, where resources are to be located.
joinfaces.jsf.websocket-endpoint-port= # The integer context parameter name to specify the websocket endpoint port when it's different from HTTP port.

## joinfaces.jsf.flow
joinfaces.jsf.flow.null-flow= # Components that are rendered by {@code Renderers} of component-family {@code javax.faces.OutcomeTarget} must use this constant as the value of the parameter named by {@link FlowHandler#TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME} when returning from a flow (without entering another flow) using such a component.

## joinfaces.jsf.partial
joinfaces.jsf.partial.execute= # The request parameter name whose request parameter value is a {@code Collection} of client identifiers identifying the components that must be processed during the <em>Apply Request Values</em>, <em>Process Validations</em>, and <em>Update Model Values</em> phases of the request processing lifecycle.
joinfaces.jsf.partial.render= # The request parameter name whose request parameter value is a {@code Collection} of client identifiers identifying the components that must be processed during the <em>Render Response</em> phase of the request processing lifecycle.
joinfaces.jsf.partial.reset-values= # If the request parameter named by the value of this constant has a parameter value of {@code true}, the implementation must return {@code true} from {@link PartialViewContext#isResetValues()}.

## joinfaces.jsf.validator
joinfaces.jsf.validator.disable-default-bean-validator= # If "true", disable JSR-303 Bean Validation.

## joinfaces.mojarra
joinfaces.mojarra.allow-text-children= # If true, allow children of h:inputText and h:outputText to be rendered.
joinfaces.mojarra.allowed-http-methods= # A white space separated list of case sensitive HTTP method names that are allowed to be processed by this servlet. * means allow all.
joinfaces.mojarra.annotation-scan-packages= # The value of this context init parameter is a whitespace separated list of values that control which class packages are scanned for javax.faces annotations.
joinfaces.mojarra.auto-complete-off-on-view-state= # If false, don't use autocomplete="off" on view state hidden input field.
joinfaces.mojarra.cache-resource-modification-timestamp= # If true, cache the modification time of the resource and use the cached time to tell if the resource needs to be refreshed.
joinfaces.mojarra.client-state-timeout= # Maximum time, in seconds, that client state will be considered valid by the default StateManager/ResponseStateManager implementations.
joinfaces.mojarra.client-state-write-buffer-size= # The size, in bytes, of the buffer that is used to write client state.
joinfaces.mojarra.compress-java-script= # If true, then the JavaScript rendered by h:commandLink will be compressed to reduce the amount of whitespace transmitted in the response.
joinfaces.mojarra.compress-view-state= # When true, the view is compressed after it is serialized and before base64 encoded.
joinfaces.mojarra.compressable-mime-types= # Specify mime types that should be gzip compressed.
joinfaces.mojarra.default-resource-max-age= # This affects the value of the Expires response header that will be sent for a resource.
joinfaces.mojarra.disable-client-state-encryption= # Since Mojarra 2.2, the client state is by default always encrypted.
joinfaces.mojarra.disable-id-uniqueness-check= # If true, then component ID uniqueness won't be checked if ProjectStage is Production to enhance performance.
joinfaces.mojarra.disable-unicode-escaping=false # By default any characters above a certain range will be escaped as either an HTML entity or a decimal reference.
joinfaces.mojarra.disable-version-tracking= # Javadoc not found.
joinfaces.mojarra.disallow-doctype-decl= # When this context param is set to true, this would set a feature on the SAX parser to disallow DOCTYPE declarations.
joinfaces.mojarra.display-configuration= # If true then all web configuration information (context initialization parameters and environment entries) will be written to the log.
joinfaces.mojarra.duplicate-j-a-r-pattern= # Javadoc not found.
joinfaces.mojarra.enable-agressive-session-dirtying= # If true, makes it so every session attribute is touched in for every request through the lifecycle.
joinfaces.mojarra.enable-client-state-debugging= # When true, the client state will as test be unserialized before writing and any serialization exceptions will be logged aInteger with a debug path to the cause of the serialization error.
joinfaces.mojarra.enable-core-tag-lib-validator= # When true, enable validation of standard Core TagLibs, at the expense of a slightly slower start time.
joinfaces.mojarra.enable-distributable= # If true, signal JSF that the application is deployed to a clustered environment, so that session dirtying will be explicitly performed, hereby forcing session replication.
joinfaces.mojarra.enable-facelets-resource-resolver-composite-components= # See issue 3684 for details.
joinfaces.mojarra.enable-groovy-scripting= # Javadoc not found.
joinfaces.mojarra.enable-html-tag-lib-validator= # When true, enable validation of standard Html TagLibs, at the expense of a slightly slower start time.
joinfaces.mojarra.enable-http-method-restriction-phase-listener= # add the HttpMethodRestrictionPhaseListener if the parameter is enabled.
joinfaces.mojarra.enable-j-s-style-hiding= # Javadoc not found.
joinfaces.mojarra.enable-lazy-bean-validation= # When true, managed beans will be validated when first created.
joinfaces.mojarra.enable-missing-resource-library-detection= # If enabled, the runtime will check for the existence of a resource library before checking for the resource itself.
joinfaces.mojarra.enable-restore-view11-compatibility= # Javadoc not found.
joinfaces.mojarra.enable-scripts-in-attribute-values= # If false, attribute values with javascript: or script: will not be rendered within attribute values to prevent potential XSS attacks.
joinfaces.mojarra.enable-threading= # When enabled, the runtime initialization and default ResourceHandler implementation will use threads to perform their functions.
joinfaces.mojarra.enable-transition-time-no-op-flash= # If true, the act of calling getExternalContext().getFlash() on the FacesContext at startup or shutdown time will cause a no-op implementation of the Flash to be returned.
joinfaces.mojarra.enable-view-state-id-rendering= # If true, the view state hidden field will be rendered with both the id and name attributes having the value of "javax.faces.ViewState".
joinfaces.mojarra.enabled-js-style-hiding= # If true, inlined JavaScript rendered by the HTML ResponseWriter implementation will be rendered so that the script is hidden from older browser implementations which does not recognize {@code <script/>} elements.
joinfaces.mojarra.enabled-load-bundle11-compatibility= # Javadoc not found.
joinfaces.mojarra.expression-factory= # This parameter specifies a class that implements the ExpressionFactory.
joinfaces.mojarra.facelet-cache= # Javadoc not found.
joinfaces.mojarra.facelet-factory= # The value of this option is a fully qualfified class that extends the com.sun.faces.facelets.FaceletFactory abstract class.
joinfaces.mojarra.facelets-processing-file-extension-process-as= # Javadoc not found.
joinfaces.mojarra.force-always-write-flash-cookie= # If true, then the flash cookie will always be written, regardless of whether or not the flash has data.
joinfaces.mojarra.force-load-configuration= # There is a chance for an NPE in com.sun.faces.application.WebappLifecycleListener with some configurations.
joinfaces.mojarra.generate-unique-server-state-ids= # If true, generate random server view state ids.
joinfaces.mojarra.injection-provider= # This parameter specifies a class that implements the InjectionProvider.
joinfaces.mojarra.managed-bean-factory-decorator= # Javadoc not found.
joinfaces.mojarra.namespace-parameters= # If true, then view state hidden field is namespaced according to NamingContainer rules.
joinfaces.mojarra.number-of-concurrent-flash-users= # Number of concurrent flash users.
joinfaces.mojarra.number-of-flashes-between-flash-reapings= # Number flashes between flash repaings.
joinfaces.mojarra.number-of-logical-views= # Defines the maximum number of serialized views stored in the session.
joinfaces.mojarra.number-of-views-in-session= # Definies the maximum number of serialized logical views per view.
joinfaces.mojarra.prefer-xhtml= # For the case where a browser supports XHTML and HTML without a quality.
joinfaces.mojarra.register-converter-property-editors= # If true, allow EL Coercion to use JSF Custom converters.
joinfaces.mojarra.resource-update-check-period= # When javax.faces.PROJECT_STATE is Production, UnitTest, or SystemTest resource paths will be cached to reduce the overhead of resource path compuation.
joinfaces.mojarra.response-buffer-size= # This parameter specifies the size, in bytes, of the buffer that is used to write all generated JSP content excluding state.
joinfaces.mojarra.send-powered-by-header= # The servlet specification defines an optional header that can be sent by a container to communicate the version of the JSP/Servlet the response was generated by.
joinfaces.mojarra.serialization-provider= # This parameter specifies a class that implements the SerializationProvider SPI.
joinfaces.mojarra.serialize-server-state= # If enabled the component state (not the tree) will be serialized before being stored in the session.
joinfaces.mojarra.validate-xml= # When true, enable validation of faces-config.xml files, at the expense of a slightly slower start time.
joinfaces.mojarra.verify-objects= # When true, JSF makes during startup sure all that registered managed beans components, validators, etc can be instantiated by the runtime, at the expense of a slightly slower start time.
joinfaces.mojarra.write-state-at-form-end= # Per the renderkit doc specification, the state information for the view will be written out prior to closing the form tag.

## joinfaces.myfaces
joinfaces.myfaces.algorithm= # Indicate the encryption algorithm used for encrypt the view state.
joinfaces.myfaces.algorithm-iv= # Defines the initialization vector (Base64 encoded) used for the encryption algorithm.
joinfaces.myfaces.algorithm-parameters= # Defines the default mode and padding used for the encryption algorithm.
joinfaces.myfaces.allow-javascript= # This parameter tells MyFaces if javascript code should be allowed in the rendered HTML output.
joinfaces.myfaces.autocomplete-off-view-state= # Add autocomplete="off" to the view state hidden field.
joinfaces.myfaces.automatic-extensionless-mapping= # This parameter enables automatic extensionless mapping for all JSF views.
joinfaces.myfaces.cache-el-expressions= # Indicates if expressions generated by facelets should be cached or not.
joinfaces.myfaces.cache-old-views-in-session-mode= # This parameter has been removed from 2.
joinfaces.myfaces.cdi-managed-converters-enabled= # Enable or disable CDI support for converters.
joinfaces.myfaces.cdi-managed-validators-enabled= # Enable or disable CDI support for validators.
joinfaces.myfaces.check-id-production-mode= # Define how duplicate ids are checked when ProjectStage is Production, by default (auto) it only check ids of components that does not encapsulate markup (like facelets UILeaf).
joinfaces.myfaces.checked-viewid-cache-enabled= # Enable or disable a cache used to 'remember' if a view exists or not and reduce the impact " + "of sucesive calls to ExternalContext.getResource().
joinfaces.myfaces.checked-viewid-cache-size= # Controls the size of the cache used to 'remember' if a view exists or not.
joinfaces.myfaces.clear-input-when-submitted-value-is-null-or-empty= # When CLEAR_INPUT_WHEN_SUBMITTED_VALUE_IS_NULL_OR_EMPTY is enabled, input fields will be cleared when null or empty values are submitted.
joinfaces.myfaces.client-view-state-timeout= # Define the time in minutes where the view state is valid when client side state saving is used.
joinfaces.myfaces.component-unique-ids-cache-size= # Set the size of the cache used to store strings generated using SectionUniqueIdCounter for component ids.
joinfaces.myfaces.compress-state-in-client= # Indicate if the view state should be compressed before encrypted(optional) and encoded.
joinfaces.myfaces.compress-state-in-session= # Indicates that the serialized state will be compressed before it is written to the session.
joinfaces.myfaces.config-refresh-period= # Set the time in seconds that check for updates of web.
joinfaces.myfaces.debug-phase-listener= # Enable/disable DebugPhaseListener feature, with provide useful information about ValueHolder variables (submittedValue, localValue, value).
joinfaces.myfaces.debug-template-resource= # Indicate the template name used to render the default debug page (see ui:debug tag).
joinfaces.myfaces.default-response-writer-content-type-mode= # Define the default content type that the default ResponseWriter generates, when no match can be derived from HTTP Accept Header.
joinfaces.myfaces.default-window-mode= # no description.
joinfaces.myfaces.delegate-faces-servlet= # Define an alternate class name that will be used to initialize MyFaces, instead the default javax.
joinfaces.myfaces.early-flush-enabled= # Enable or disable an early flush which allows to send e.g. the HTML-Head to the client " + "while the rest gets rendered.
joinfaces.myfaces.el-resolver-comparator= # The Class of an {@code Comparator<ELResolver/>} implementation.
joinfaces.myfaces.el-resolver-predicate= # The {@link Class} of an {@code Predicate<ELResolver>} implementation.
joinfaces.myfaces.enum-converter-allow-string-passtrough= # If value is a String instance and this param is true, pass it directly without try any change.
joinfaces.myfaces.error-handler= # Deprecated: use JSF 2.0 ExceptionHandler.
joinfaces.myfaces.error-handling= # Indicate if myfaces is responsible to handle errors.
joinfaces.myfaces.error-template-resource= # Indicate the template name used to render the default error page used by MyFaces specific error handler implementation.
joinfaces.myfaces.expression-factory= # This parameter specifies the ExpressionFactory implementation to use.
joinfaces.myfaces.faces-flow-client-window-ids-in-session= # Indicate the max number of client window ids stored into session by faces flow.
joinfaces.myfaces.faces-init-plugins= # comma delimited list of plugin classes which can be hooked into myfaces.
joinfaces.myfaces.faces-initializer= # Class name of a custom FacesInitializer implementation.
joinfaces.myfaces.flash-scope-disabled= # Defines whether flash scope is disabled, preventing add the Flash cookie to the response.
joinfaces.myfaces.gae-jsf-annotations-jar-files= # When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for annotations.
joinfaces.myfaces.gae-jsf-jar-files= # When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for files (faces-config, facelets taglib or annotations).
joinfaces.myfaces.initialize-always-standalone= # If this param is set to true, the check for faces servlet mapping is not done.
joinfaces.myfaces.initialize-skip-jar-faces-config-scan= # If the flag is true, the algoritm skip jar scanning for faces-config files to check if the current application requires FacesServlet to be added dynamically (servlet spec 3).
joinfaces.myfaces.jsf-js-mode= # Define the mode used for jsf.
joinfaces.myfaces.jsp-suffix=
joinfaces.myfaces.lazy-load-config-objects= # Indicate if the classes associated to components, converters, validators or behaviors should be loaded as soon as they are added to the current application instance or instead loaded in a lazy way.
joinfaces.myfaces.log-web-context-params= # Indicate if log all web config params should be done before initialize the webapp.
joinfaces.myfaces.mac-algorithm= # Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state.
joinfaces.myfaces.mac-secret= # Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm.
joinfaces.myfaces.mac-secret-cache= # If is set to "false", the secret key used for MAC algorithm is not cached.
joinfaces.myfaces.mark-initial-state-when-apply-build-view= # no description.
joinfaces.myfaces.number-of-flash-tokens-in-session= # Indicate the max number of flash tokens stored into session.
joinfaces.myfaces.number-of-sequential-views-in-session= # Indicates the amount of views (default is not active) that should be stored in session between sequential POST or POST-REDIRECT-GET if org.
joinfaces.myfaces.number-of-views-in-session= # Defines the amount (default = 20) of the latest views are stored in session.
joinfaces.myfaces.pretty-html= # If true, rendered HTML code will be formatted, so that it is "human readable".
joinfaces.myfaces.random-key-in-csrf-session-token= # Defines how to generate the csrf session token.
joinfaces.myfaces.random-key-in-csrf-session-token-length= # Set the default length of the random key used for the csrf session token.
joinfaces.myfaces.random-key-in-csrf-session-token-secure-random-algoritm= # Sets the random algorithm to initialize the secure random id generator.
joinfaces.myfaces.random-key-in-csrf-session-token-secure-random-class= # Sets the random class to initialize the secure random id generator.
joinfaces.myfaces.random-key-in-csrf-session-token-secure-random-provider= # Sets the random provider to initialize the secure random id generator.
joinfaces.myfaces.random-key-in-view-state-session-token= # Adds a random key to the generated view state session token.
joinfaces.myfaces.random-key-in-view-state-session-token-length= # Set the default length of the random key added to the view state session token.
joinfaces.myfaces.random-key-in-view-state-session-token-secure-random-algorithm= # Sets the random algorithm to initialize the secure random id generator.
joinfaces.myfaces.random-key-in-view-state-session-token-secure-random-class= # Sets the random class to initialize the secure random id generator.
joinfaces.myfaces.random-key-in-view-state-session-token-secure-random-provider= # Sets the random provider to initialize the secure random id generator.
joinfaces.myfaces.refresh-transient-build-on-pss= # Indicate if the facelet associated to the view should be reapplied when the view is refreshed.
joinfaces.myfaces.refresh-transient-build-on-pss-preserve-state= # Enable or disable a special mode that enable full state for parent components containing c:if, c:forEach, c:choose and ui:include with src=ELExpression.
joinfaces.myfaces.render-clear-javascript-for-button= # This param renders the clear javascript on button necessary only for compatibility with hidden fields feature of myfaces.
joinfaces.myfaces.render-form-submit-script-inline= # If set true, render the form submit script inline, as in myfaces core 1.
joinfaces.myfaces.render-form-view-state-at-begin= # This param makes h:form component to render the view state and other hidden fields at the beginning of the form.
joinfaces.myfaces.render-hidden-fields-for-link-params= # This param renders hidden fields at the end of h:form for link params when h:commandLink + f:param is used, instead use javascript to create them.
joinfaces.myfaces.render-viewstate-id= # Define if the input field that should store the state.
joinfaces.myfaces.resource-buffer-size= # Define the default buffer size that is used between Resource.
joinfaces.myfaces.resource-handler-cache-enabled= # Enable or disable the cache used to "remember" if a resource handled by the default ResourceHandler exists or not.
joinfaces.myfaces.resource-handler-cache-size= # Controls the size of the cache used to check if a resource exists or not.
joinfaces.myfaces.resource-max-time-expires= # Set the max time in miliseconds set on the "Expires" header for a resource rendered by the default ResourceHandler.
joinfaces.myfaces.save-form-submit-link-ie= # Add a code that save the form before submit using a link.
joinfaces.myfaces.secret= # Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm.
joinfaces.myfaces.secret-cache= # If is set to "false", the secret key used for encryption algorithm is not cached.
joinfaces.myfaces.serial-factory= # Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array.
joinfaces.myfaces.serialize-state-in-session= # Indicate if the state should be serialized before save it on the session.
joinfaces.myfaces.service-provider-finder= # Class name of a custom ServiceProviderFinder implementation.
joinfaces.myfaces.strict-jsf2-allow-slash-library-name= # Allow slash in the library name of a Resource.
joinfaces.myfaces.strict-jsf2-cc-el-resolver= # Change default getType() behavior for composite component EL resolver, from return null (see JSF 2_0 spec section 5_6_2_2) to use the metadata information added by composite:attribute, ensuring components working with chained EL expressions to find the right type when a getType() is called over the source EL expression.
joinfaces.myfaces.strict-jsf2-facelets-compatibility= # This param makes components like c:set, ui:param and templating components like ui:decorate, ui:composition and ui:include to behave like the ones provided originally in facelets 1_1_x.
joinfaces.myfaces.strict-jsf2-refresh-target-ajax= # Detect if a target (usually head) should be update for the current view in an ajax render operation.
joinfaces.myfaces.strict-jsf2-view-not-found= # If this param is set to true, a check will be done in Restore View Phase to check if the viewId exists or not and if it does not exists, a 404 response will be thrown.
joinfaces.myfaces.strict-xhtml-links= # Use {@code &amp;} entity instead a plain {@code &} character within HTML.
joinfaces.myfaces.support-el3-import-handler= # This parameter specifies whether or not the ImportHandler will be supported.
joinfaces.myfaces.support-jsp-and-faces-el= # If set false, myfaces won't support JSP and javax.faces.el.
joinfaces.myfaces.support-managed-beans= # If set false, myfaces won't support ManagedBeans anymore.
joinfaces.myfaces.temporal-resourcehandler-cache-enabled= # If this param is set to true (default false), a temporal directory is created and all files handled by this ResourceLoader are cached there, avoiding the problem described on MYFACES-3586.
joinfaces.myfaces.use-encryption= # Indicate if the view state is encrypted or not.
joinfaces.myfaces.use-flash-scope-purge-views-in-session= # Allow use flash scope to keep track of the views used in session and the previous ones, so server side state saving can delete old views even if POST-REDIRECT-GET pattern is used.
joinfaces.myfaces.use-multiple-js-files-for-jsf-uncompressed-js= # If this param is true and the project stage is development mode, the source javascript files will be loaded separately instead have all in just one file, to preserve line numbers and make javascript debugging of the default jsf javascript file more simple.
joinfaces.myfaces.validate= # Validate if the managed beans and navigations rules are correct.
joinfaces.myfaces.validate-xml= # If set to true, tag library XML files and faces config XML files using schema will be validated during application start up.
joinfaces.myfaces.view-pool-deferred-navigation= # Defines if the view pool uses deferred navigation to recycle views when navigation is performed.
joinfaces.myfaces.view-pool-entry-mode= # Defines the type of memory reference that is used to hold the view into memory.
joinfaces.myfaces.view-pool-max-dynamic-partial-limit= # Defines the limit of the views that cannot be reused partially.
joinfaces.myfaces.view-pool-max-pool-size= # Defines the number of views to be hold per each view metadata definition.
joinfaces.myfaces.view-unique-ids-cache-enabled= # Enable or disable a cache used to 'remember' the generated facelets unique ids " + "and reduce the impact over memory usage.
joinfaces.myfaces.viewstate-javascript= # Set the view state using a javascript function instead a hidden input field.
joinfaces.myfaces.wrap-script-content-with-xml-comment-tag= # Wrap content inside script with xml comment to prevent old browsers to display it.
joinfaces.myfaces.wrap-tag-exceptions-as-context-aware= # Wrap exception caused by calls to EL expressions, so information like the location, expression string and tag name can be retrieved by the ExceptionHandler implementation and used to output meaningful information about itself.

## joinfaces.myfaces.annotation
joinfaces.myfaces.annotation.scan-packages= # Servlet context init parameter which defines which packages to scan for beans, separated by commas.
joinfaces.myfaces.annotation.use-cdi-for-annotation-scanning= # Defines if CDI should be used for annotation scanning to improve the startup performance.

## joinfaces.myfaces.spi
joinfaces.myfaces.spi.injection-provider= # no description.

## joinfaces.myfaces.validator
joinfaces.myfaces.validator.bean-before-jsf-validation= # Enforce f:validateBean to be called first before any JSF validator.

## joinfaces.omnifaces
joinfaces.omnifaces.cache-install-buffer-filter= # Boolean that when true installs a Servlet Filter (Servlet 3.0+ only) that works in conjunction with the useBuffer attribute of the Cache component to enable an alternative way to grab the content that needs to be cached.
joinfaces.omnifaces.cache-provider= # org.omnifaces.CACHE_PROVIDER.
joinfaces.omnifaces.cache-setting-application-max-capacity= # Sets the maximum number of elements that will be stored per web module (application scope).
joinfaces.omnifaces.cache-setting-application-ttl= # Sets the maximum amount of time in seconds that cached content is valid for the application scope.
joinfaces.omnifaces.cache-setting-session-max-capacity= # Sets the maximum number of elements that will be stored per session.
joinfaces.omnifaces.cache-setting-session-ttl= # Sets the maximum amount of time in seconds that cached content is valid for the session scope.
joinfaces.omnifaces.cdn-resource-handler-disabled= # org.omnifaces.CDN_RESOURCE_HANDLER_DISABLED.
joinfaces.omnifaces.cdn-resource-handler-urls= # org.omnifaces.CDN_RESOURCE_HANDLER_URLS.
joinfaces.omnifaces.combined-resource-handler-cache-ttl= # Set with a value greater than 0 to activate server-side caching of the combined resource files.
joinfaces.omnifaces.combined-resource-handler-disabled= # org.omnifaces.COMBINED_RESOURCE_HANDLER_DISABLED.
joinfaces.omnifaces.combined-resource-handler-excluded-resources= # List of resource identifiers of {@code <h:head>} resources which needs to be excluded from combining.
joinfaces.omnifaces.combined-resource-handler-inline-css= # Set to {@code true} if you want to render the combined CSS resources inline (embedded in HTML) instead of as a resource.
joinfaces.omnifaces.combined-resource-handler-inline-js= # Set to {@code true} if you want to render the combined JS resources inline (embedded in HTML) instead of as a resource.
joinfaces.omnifaces.combined-resource-handler-suppressed-resources= # List of resource identifiers of {@code <h:head>} resources which needs to be suppressed and removed.
joinfaces.omnifaces.defaultcache= # org.omnifaces.defaultcache.
joinfaces.omnifaces.exception-types-to-unwrap= # org.omnifaces.EXCEPTION_TYPES_TO_UNWRAP.
joinfaces.omnifaces.faces-views-dispatch-method= # org.omnifaces.FACES_VIEWS_DISPATCH_METHOD.
joinfaces.omnifaces.faces-views-enabled= # org.omnifaces.FACES_VIEWS_ENABLED.
joinfaces.omnifaces.faces-views-extension-action= # org.omnifaces.FACES_VIEWS_EXTENSION_ACTION.
joinfaces.omnifaces.faces-views-filter-after-declared-filters= # org.omnifaces.FACES_VIEWS_FILTER_AFTER_DECLARED_FILTERS.
joinfaces.omnifaces.faces-views-path-action= # org.omnifaces.FACES_VIEWS_PATH_ACTION.
joinfaces.omnifaces.faces-views-scan-paths= # List of paths that are to be scanned by faces views.
joinfaces.omnifaces.faces-views-scanned-views-always-extensionless= # org.omnifaces.FACES_VIEWS_SCANNED_VIEWS_ALWAYS_EXTENSIONLESS.
joinfaces.omnifaces.faces-views-view-handler-mode= # org.omnifaces.FACES_VIEWS_VIEW_HANDLER_MODE.
joinfaces.omnifaces.html5-render-kit-passthrough-attributes= # org.omnifaces.HTML5_RENDER_KIT_PASSTHROUGH_ATTRIBUTES.

## joinfaces.primefaces
joinfaces.primefaces.auto-update=
joinfaces.primefaces.cache-provider= # A cache store is required to use the cache component, two different providers are supported as cache implementation; EHCache and Hazelcast.
joinfaces.primefaces.client-side-validation= # Controls client side validatation.
joinfaces.primefaces.dir= # Defines orientation, ltr or rtl.
joinfaces.primefaces.early-post-param-evaluation=
joinfaces.primefaces.font-awesome= # Enabled font-awesome icons.
joinfaces.primefaces.interpolate-client-side-validation-messages=
joinfaces.primefaces.legacy-widget-namespace= # Enables window scope so that widgets can be accessed using widgetVar.method() in addition to default PF namespace approach like PF('widgetVar').method().
joinfaces.primefaces.move-scripts-to-bottom=
joinfaces.primefaces.private-captcha-key= # Private reCaptcha key.
joinfaces.primefaces.public-captcha-key= # Public reCaptcha key.
joinfaces.primefaces.push-server-url= # Custom server url for PrimeFaces Push.
joinfaces.primefaces.reset-values= # When enabled, ajax updated inputs are reset first.
joinfaces.primefaces.secret=primefaces # Secret key to encrypt-decrypt value expressions exposed in rendering StreamedContents.
joinfaces.primefaces.submit= # Defines ajax submit mode, full or partial.
joinfaces.primefaces.theme= # Theme of the application.
joinfaces.primefaces.transform-metadata= # Transforms bean validation metadata to html attributes.
joinfaces.primefaces.uploader= # Defines uploader mode; auto, native or commons.

## joinfaces.primefaces.mobile
joinfaces.primefaces.mobile.theme= # Theme of the mobile application.

## joinfaces.rewrite
joinfaces.rewrite.base-packages= # Retrieve the optional package filter configuration parameter.
joinfaces.rewrite.config-reloading= # Reload configuration.
joinfaces.rewrite.scan-lib-directory= # Does the user want to scan the WEB-INF/lib directory.

## joinfaces.rewrite.annotation-config-provider
joinfaces.rewrite.annotation-config-provider.base-packages=
joinfaces.rewrite.annotation-config-provider.enabled=true

## joinfaces.rewrite.filter
joinfaces.rewrite.filter.dispatcher-types=forward,include,request,async,error # Dispatcher types for the RewriteFilter as defined in the Servlet Specification.
joinfaces.rewrite.filter.enabled=true # If the RewriteFilter should be actively handled by JoinFaces.
joinfaces.rewrite.filter.order= # The order of the RewriteFilter.
joinfaces.rewrite.filter.url-patterns=/* # URL patterns for the RewriteFilter as defined in the Servlet Specification.

## joinfaces.richfaces
joinfaces.richfaces.base-skin=
joinfaces.richfaces.datatable-uses-view-locale=
joinfaces.richfaces.enable-control-skinning=
joinfaces.richfaces.enable-control-skinning-classes=
joinfaces.richfaces.execute-awt-initializer=
joinfaces.richfaces.resource-cache-size=
joinfaces.richfaces.resource-default-ttl=
joinfaces.richfaces.resource-default-version=
joinfaces.richfaces.skin=

## joinfaces.richfaces.builtin

## joinfaces.richfaces.builtin.filter
joinfaces.richfaces.builtin.filter.enabled=

## joinfaces.richfaces.builtin.sort
joinfaces.richfaces.builtin.sort.enabled=

## joinfaces.richfaces.cache
joinfaces.richfaces.cache.lru-map-cache-size=

## joinfaces.richfaces.push
joinfaces.richfaces.push.handler-mapping=
joinfaces.richfaces.push.initialize-on-startup=

## joinfaces.richfaces.push.jms
joinfaces.richfaces.push.jms.connection-factory=
joinfaces.richfaces.push.jms.connection-password=
joinfaces.richfaces.push.jms.connection-username=
joinfaces.richfaces.push.jms.enabled=
joinfaces.richfaces.push.jms.topics-namespace=

## joinfaces.richfaces.push.session
joinfaces.richfaces.push.session.max-inactive-interval=

## joinfaces.richfaces.queue
joinfaces.richfaces.queue.enabled=

## joinfaces.richfaces.resource-mapping
joinfaces.richfaces.resource-mapping.compressed-stages=
joinfaces.richfaces.resource-mapping.enabled=
joinfaces.richfaces.resource-mapping.location=
joinfaces.richfaces.resource-mapping.mapping-file=
joinfaces.richfaces.resource-mapping.packed-stages=

## joinfaces.richfaces.resource-optimization
joinfaces.richfaces.resource-optimization.compression-stages=
joinfaces.richfaces.resource-optimization.enabled=
joinfaces.richfaces.resource-optimization.packed-stages=

## joinfaces.scope-configurer.cdi
# Support for CDI @javax.enterprise.context.xxxScoped annotations.
joinfaces.scope-configurer.cdi.enabled=true
joinfaces.scope-configurer.cdi.order= # The order of the BeanFactoryPostProcessor.

## joinfaces.scope-configurer.jsf
# Support for JSF @xxxScoped annotations.
joinfaces.scope-configurer.jsf.enabled=true
joinfaces.scope-configurer.jsf.order= # The order of the BeanFactoryPostProcessor.

## joinfaces.undertow
joinfaces.undertow.class-path-resource=META-INF/resources # Classpath to find jsf resources Default to META-INF/resources.

## joinfaces.view-scope
joinfaces.view-scope.enabled=true # Enables the registration of JoinFaces view scope implementation.

Appendix B: Dependency versions

The versions already handled by the dependency management of Spring Boot aren’t listed here again. The can be found in the corresponding chapter of the Spring Boot Reference Guide.
Group ID Artifact ID Version

com.github.adminfaces

admin-template

1.0.2

com.github.adminfaces

admin-theme

1.0.2

commons-fileupload

commons-fileupload

1.4

de.beyondjava

angularFaces-core

2.1.12

io.github.classgraph

classgraph

4.8.54

jakarta.ejb

jakarta.ejb-api

3.2.6

jakarta.el

jakarta.el-api

3.0.3

jakarta.faces

jakarta.faces-api

2.3.2

javax.enterprise

cdi-api

2.0.SP1

net.bootsfaces

bootsfaces

1.4.2

org.apache.myfaces.core

myfaces-api

2.3.5

org.apache.myfaces.core

myfaces-impl

2.3.5

org.apache.myfaces.tobago

tobago-core

4.4.1

org.apache.myfaces.tobago

tobago-theme-charlotteville

4.4.1

org.apache.myfaces.tobago

tobago-theme-richmond

4.4.1

org.apache.myfaces.tobago

tobago-theme-scarborough

4.4.1

org.apache.myfaces.tobago

tobago-theme-speyside

4.4.1

org.apache.myfaces.tobago

tobago-theme-standard

4.4.1

org.apache.tomcat

tomcat-jasper

9.0.29

org.butterfaces

components

3.2.0

org.glassfish

jakarta.faces

2.3.14

org.icefaces

icefaces

4.3.0

org.icefaces

icefaces-ace

4.3.0

org.jboss.spec.javax.servlet.jsp

jboss-jsp-api_2.3_spec

2.0.0.Final

org.jboss.weld.servlet

weld-servlet-core

3.1.2.Final

org.joinfaces

adminfaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

angularfaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

bootsfaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

butterfaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

icefaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

jetty-spring-boot-starter

master-SNAPSHOT

org.joinfaces

joinfaces-autoconfigure

master-SNAPSHOT

org.joinfaces

joinfaces-gradle-plugin

master-SNAPSHOT

org.joinfaces

joinfaces-maven-plugin

master-SNAPSHOT

org.joinfaces

joinfaces-scan-tools

master-SNAPSHOT

org.joinfaces

joinfaces-security-taglib

master-SNAPSHOT

org.joinfaces

joinfaces-test

master-SNAPSHOT

org.joinfaces

jsf-spring-boot-starter

master-SNAPSHOT

org.joinfaces

mojarra-spring-boot-starter

master-SNAPSHOT

org.joinfaces

myfaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

omnifaces1-spring-boot-starter

master-SNAPSHOT

org.joinfaces

omnifaces3-spring-boot-starter

master-SNAPSHOT

org.joinfaces

primefaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

rewrite-spring-boot-starter

master-SNAPSHOT

org.joinfaces

richfaces-spring-boot-starter

master-SNAPSHOT

org.joinfaces

security-spring-boot-starter

master-SNAPSHOT

org.joinfaces

tobago-spring-boot-starter

master-SNAPSHOT

org.joinfaces

tomcat-spring-boot-starter

master-SNAPSHOT

org.joinfaces

undertow-spring-boot-starter

master-SNAPSHOT

org.joinfaces

weld-spring-boot-starter

master-SNAPSHOT

org.ocpsoft.logging

logging-adapter-slf4j

1.0.5.Final

org.ocpsoft.rewrite

rewrite-config-prettyfaces

3.4.2.Final

org.ocpsoft.rewrite

rewrite-integration-cdi

3.4.2.Final

org.ocpsoft.rewrite

rewrite-integration-faces

3.4.2.Final

org.ocpsoft.rewrite

rewrite-integration-spring

3.4.2.Final

org.ocpsoft.rewrite

rewrite-servlet

3.4.2.Final

org.primefaces

primefaces

7.0

org.primefaces.extensions

primefaces-extensions

7.0.3

org.primefaces.extensions

resources-ckeditor

7.0.3

org.richfaces

richfaces

4.5.17.Final

org.richfaces

richfaces-a4j

4.5.17.Final

org.springframework.boot

spring-boot-dependencies

2.2.2.RELEASE