The first step to using Spring Faces is to route requests to the
            DispatcherServlet
            in the
            web.xml
            file. In this example, we map all URLs that begin with
            /spring/
            to the servlet. The servlet needs to be configured. An
            init-param
            is used in the servlet to pass the
            contextConfigLocation
            . This is the location of the Spring configuration for your application.
        
<servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/web-application-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/spring/*</url-pattern> </servlet-mapping>
            In order for JSF to bootstrap correctly, the
            FacesServlet
            must be configured in
            web.xml
            as it normally would even though you generally will not need to route requests through it at all when using
            Spring Faces.
        
<!-- Just here so the JSF implementation can initialize, *not* used at runtime --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Just here so the JSF implementation can initialize --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping>
            When using the Spring Faces components, you also need to configure the Spring JavaScript
            ResourceServlet
            so that CSS and JavaScript resources may be output correctly by the components. This servlet must be mapped
            to /resources/* in order for the URL's rendered by the components to function correctly.
        
<!-- Serves static resource content from .jar files such as spring-faces.jar --> <servlet> <servlet-name>Resource Servlet</servlet-name> <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <!-- Map all /resources requests to the Resource Servlet for handling --> <servlet-mapping> <servlet-name>Resource Servlet</servlet-name> <url-pattern>/resources/*</url-pattern> </servlet-mapping>
The Spring Faces components require the use of Facelets instead of JSP, so the typical Facelets configuration must be added as well when using these components.
!-- Use JSF view templates saved as *.xhtml, for use with Facelets --> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param>
			For optimal page-loading performance, the Spring Faces component library includes a few special components:
			includeStyles and includeScripts.  These components will eagerly load the neccessary
			CSS stylesheets and JavaScript files at the position they are placed in your JSF view template.  In accordance
			with the recommendations of the Yahoo Performance Guildlines, these two tags should be placed in the head
			section of any page that uses the Spring Faces components.  For example:
		
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jstl/core" xmlns:sf="http://www.springframework.org/tags/faces" contentType="text/html" encoding="UTF-8"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Spring Faces: Hotel Booking Sample Application</title> <sf:includeStyles /> <sf:includeScripts /> <ui:insert name="headIncludes"/> </head> ... </html> </f:view>
This shows the opening of a typical Facelets XHTML layout template that uses these components to force the loading of the needed CSS and JavaScript resources at the ideal position.
		The includeStyles component includes the necessary resources for the Dojo widget theme.  By default, it includes
		the resources for the "tundra" theme.  An alternate theme may be selected by setting the optional "theme" and "themePath" attributes
		on the includeStyles component.  For example:
	
<sf:includeStyles themePath="/styles/" theme="foobar"/>
will try to load a CSS stylesheet at "/styles/foobar/foobar.css" using the Spring JavaScript ResourceServlet.