|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.faces.application.ResourceHandler javax.faces.application.ResourceHandlerWrapper org.omnifaces.resourcehandler.UnmappedResourceHandler
public class UnmappedResourceHandler
The UnmappedResourceHandler allows the developer to map JSF resources on an URL pattern of
/javax.faces.resource/*
without the need for an additional FacesServlet
prefix or suffix URL
pattern in the default produced resource URLs, such as /javax.faces.resource/faces/css/style.css
or
/javax.faces.resource/css/style.css.xhtml
. This resource handler will produce unmapped URLs like
/javax.faces.resource/css/style.css
. This has the major advantage that the developer don't need the
#{resource}
EL expression anymore in order to properly reference relative URLs to images in CSS files.
Given the following folder structure,
WebContent `-- resources `-- css |-- images | `-- background.png `-- style.css
And the following CSS file reference:
<h:outputStylesheet name="css/style.css" />
you can in css/style.css
just use:
body { background: url("images/background.png"); }
instead of
body { background: url("#{resource['css/images/background.png']}"); }
To get it to run, this handler needs be registered as follows in faces-config.xml
:
<application> <resource-handler>org.omnifaces.resourcehandler.UnmappedResourceHandler</resource-handler> </application>
And the FacesServlet
needs to have an additional mapping /javax.faces.resource/*
in
web.xml
. For example, assuming that you've already a mapping on *.xhtml
:
<servlet-mapping> <servlet-name>facesServlet</servlet-name> <url-pattern>*.xhtml</url-pattern> <url-pattern>/javax.faces.resource/*</url-pattern> </servlet-mapping>
If you're also using the CombinedResourceHandler
or any other custom resource handler, then you need to
ensure that this is in faces-config.xml
declared before the
UnmappedResourceHandler
. Thus, like so:
<application> <resource-handler>org.omnifaces.resourcehandler.CombinedResourceHandler</resource-handler> <resource-handler>org.omnifaces.resourcehandler.UnmappedResourceHandler</resource-handler> </application>
Otherwise the combined resource handler will still produce mapped URLs. In essence, the one which is later registered wraps the previously registered one.
Field Summary |
---|
Fields inherited from class javax.faces.application.ResourceHandler |
---|
LOCALE_PREFIX, RESOURCE_EXCLUDES_DEFAULT_VALUE, RESOURCE_EXCLUDES_PARAM_NAME, RESOURCE_IDENTIFIER |
Constructor Summary | |
---|---|
UnmappedResourceHandler(javax.faces.application.ResourceHandler wrapped)
Creates a new instance of this unmapped resource handler which wraps the given resource handler. |
Method Summary | |
---|---|
javax.faces.application.Resource |
createResource(java.lang.String resourceName)
Delegate to createResource(String, String, String) with null as library name and content
type. |
javax.faces.application.Resource |
createResource(java.lang.String resourceName,
java.lang.String libraryName)
Delegate to createResource(String, String, String) with null as content type. |
javax.faces.application.Resource |
createResource(java.lang.String resourceName,
java.lang.String libraryName,
java.lang.String contentType)
Delegate to createResource(String, String, String) of the wrapped resource handler. |
javax.faces.application.ResourceHandler |
getWrapped()
|
void |
handleResourceRequest(javax.faces.context.FacesContext context)
|
boolean |
isResourceRequest(javax.faces.context.FacesContext context)
Returns true if ExternalContext.getRequestServletPath() starts with value of
ResourceHandler.RESOURCE_IDENTIFIER . |
Methods inherited from class javax.faces.application.ResourceHandlerWrapper |
---|
getRendererTypeForResourceName, libraryExists |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public UnmappedResourceHandler(javax.faces.application.ResourceHandler wrapped)
wrapped
- The resource handler to be wrapped.Method Detail |
---|
public javax.faces.application.Resource createResource(java.lang.String resourceName)
createResource(String, String, String)
with null
as library name and content
type.
createResource
in class javax.faces.application.ResourceHandlerWrapper
public javax.faces.application.Resource createResource(java.lang.String resourceName, java.lang.String libraryName)
createResource(String, String, String)
with null
as content type.
createResource
in class javax.faces.application.ResourceHandlerWrapper
public javax.faces.application.Resource createResource(java.lang.String resourceName, java.lang.String libraryName, java.lang.String contentType)
createResource(String, String, String)
of the wrapped resource handler. If it returns
non-null
, then return a wrapped resource whose Resource.getRequestPath()
returns the
unmapped URL.
createResource
in class javax.faces.application.ResourceHandlerWrapper
public boolean isResourceRequest(javax.faces.context.FacesContext context)
true
if ExternalContext.getRequestServletPath()
starts with value of
ResourceHandler.RESOURCE_IDENTIFIER
.
isResourceRequest
in class javax.faces.application.ResourceHandlerWrapper
public void handleResourceRequest(javax.faces.context.FacesContext context) throws java.io.IOException
handleResourceRequest
in class javax.faces.application.ResourceHandlerWrapper
java.io.IOException
public javax.faces.application.ResourceHandler getWrapped()
getWrapped
in interface javax.faces.FacesWrapper<javax.faces.application.ResourceHandler>
getWrapped
in class javax.faces.application.ResourceHandlerWrapper
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |