- java.lang.Object
-
- jakarta.faces.application.ResourceHandler
-
- jakarta.faces.application.ResourceHandlerWrapper
-
- org.omnifaces.resourcehandler.DefaultResourceHandler
-
- org.omnifaces.resourcehandler.ViewResourceHandler
-
- All Implemented Interfaces:
FacesWrapper<ResourceHandler>
public class ViewResourceHandler extends DefaultResourceHandler
ThisResourceHandler
basically turns any concrete non-Facelets file into a Faces view, so that you can use EL expressions and even Faces components in them. The response content type will default toFaces.getMimeType(String)
which is configureable inweb.xml
and overrideable via<f:view contentType="...">
.Real world examples are
/sitemap.xml
and/robots.txt
.Installation
To get it to run, this handler needs be registered as follows in
faces-config.xml
:<application> <resource-handler>org.omnifaces.resourcehandler.ViewResourceHandler</resource-handler> </application>
To configure the Faces view resources, a "org.omnifaces.VIEW_RESOURCE_HANDLER_URIS" context parameter has to be provided wherein the view resources are specified as a comma separated string of context-relative URIs.
Here is an example configuration:
<context-param> <param-name>org.omnifaces.VIEW_RESOURCE_HANDLER_URIS</param-name> <param-value>/sitemap.xml, /products/sitemap.xml, /reviews/sitemap.xml, /robots.txt</param-value> </context-param>
Wildcards in URIs are at the moment not supported.
The
OmniViewHandler
will take care of rendering the view.- Since:
- 3.10
- Author:
- Bauke Scholtz
- See Also:
DefaultResourceHandler
,OmniViewHandler
-
-
Field Summary
Fields Modifier and Type Field Description static String
PARAM_NAME_VIEW_RESOURCES
The context parameter name to specify URIs to treat as Faces views.-
Fields inherited from class org.omnifaces.resourcehandler.DefaultResourceHandler
FACES_SCRIPT_RESOURCE_NAME, RES_NOT_FOUND
-
Fields inherited from class jakarta.faces.application.ResourceHandler
JSF_SCRIPT_LIBRARY_NAME, JSF_SCRIPT_RESOURCE_NAME, LOCALE_PREFIX, RESOURCE_CONTRACT_XML, RESOURCE_EXCLUDES_DEFAULT_VALUE, RESOURCE_EXCLUDES_PARAM_NAME, RESOURCE_IDENTIFIER, WEBAPP_CONTRACTS_DIRECTORY_PARAM_NAME, WEBAPP_RESOURCES_DIRECTORY_PARAM_NAME
-
-
Constructor Summary
Constructors Constructor Description ViewResourceHandler(ResourceHandler wrapped)
Creates a new instance of this view resource handler which wraps the given resource handler.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
addFacesServletMappingsIfNecessary(ServletContext servletContext)
This will map theFacesServlet
to the URIs specified in "org.omnifaces.VIEW_RESOURCE_HANDLER_URIS" context parameter.ViewResource
createViewResource(FacesContext context, String resourceName)
This override ensures thatFaces.getRequestServletPath()
is returned as concrete resource rather than the providedresourceName
when theisViewResourceRequest(FacesContext)
returns true.static boolean
isViewResourceRequest(FacesContext context)
Returnstrue
if the current HTTP request is requesting for a view resource managed by this resource handler.-
Methods inherited from class org.omnifaces.resourcehandler.DefaultResourceHandler
createResource, createResource, createResource, createResourceFromLibrary, decorateResource, decorateResource, getLibraryName
-
Methods inherited from class jakarta.faces.application.ResourceHandlerWrapper
createResourceFromId, getRendererTypeForResourceName, getViewResources, getViewResources, getWrapped, handleResourceRequest, isResourceRendered, isResourceRequest, isResourceURL, libraryExists, markResourceRendered
-
-
-
-
Field Detail
-
PARAM_NAME_VIEW_RESOURCES
public static final String PARAM_NAME_VIEW_RESOURCES
The context parameter name to specify URIs to treat as Faces views.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ViewResourceHandler
public ViewResourceHandler(ResourceHandler wrapped)
Creates a new instance of this view resource handler which wraps the given resource handler.- Parameters:
wrapped
- The resource handler to be wrapped.
-
-
Method Detail
-
addFacesServletMappingsIfNecessary
public static void addFacesServletMappingsIfNecessary(ServletContext servletContext) throws MalformedURLException
This will map theFacesServlet
to the URIs specified in "org.omnifaces.VIEW_RESOURCE_HANDLER_URIS" context parameter. This is invoked byApplicationListener
, because the faces servlet registration has to be available for adding new mappings.- Parameters:
servletContext
- The involved servlet context.- Throws:
MalformedURLException
- When one of the URIs specified in context parameter is malformed.
-
isViewResourceRequest
public static boolean isViewResourceRequest(FacesContext context)
Returnstrue
if the current HTTP request is requesting for a view resource managed by this resource handler.- Parameters:
context
- The involved faces context.- Returns:
true
if the current HTTP request is requesting for a view resource managed by this resource handler.
-
createViewResource
public ViewResource createViewResource(FacesContext context, String resourceName)
This override ensures thatFaces.getRequestServletPath()
is returned as concrete resource rather than the providedresourceName
when theisViewResourceRequest(FacesContext)
returns true.- Overrides:
createViewResource
in classResourceHandlerWrapper
-
-