- 

Available since OmniFaces 3.10

This ResourceHandler basically turns any concrete non-Facelets file into a JSF view, so that you can use EL expressions and even JSF components in them. The response content type will default to Faces.getMimeType(String) which is configureable in web.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 JSF 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.

Demo

This resource handler is also configured with robots.txt and sitemap.xml on this showcase web application. You can find the demo source code below and here the generated robots.txt and sitemap.xml.

Demo
Demo source code
<f:view xmlns:f="http://xmlns.jcp.org/jsf/core" contentType="text/plain">
sitemap:#{faces.requestBaseURL}sitemap.xml
</f:view>