|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.myfaces.renderkit.html.util.DefaultAddResource
public class DefaultAddResource
This is a utility class to render link to resources used by custom components. Mostly used to avoid having to include [script src="..."][/script] in the head of the pages before using a component.
When used together with the ExtensionsFilter, this class can allow components in the body of a page to emit script and stylesheet references into the page head section. The relevant methods on this object simply queue the changes, and when the page is complete the ExtensionsFilter calls back into this class to allow it to insert the commands into the buffered response. This class also works with the ExtensionsFilter to allow components to emit references to javascript/css/etc which are bundled in the component's jar file. Special URLs are generated which the ExtensionsFilter will later handle by retrieving the specified resource from the classpath. The special URL format is:{contextPath}/faces/myFacesExtensionResource/ {resourceLoaderName}/{cacheKey}/{resourceURI}Where:
Nested Class Summary | |
---|---|
protected static class |
DefaultAddResource.AttributeInfo
|
protected static class |
DefaultAddResource.ParseCallbackListener
|
protected static interface |
DefaultAddResource.PositionedInfo
|
protected static interface |
DefaultAddResource.WritablePositionedInfo
|
Field Summary | |
---|---|
protected java.lang.String |
_contextPath
|
protected int |
afterBodyContentInsertPosition
|
protected int |
beforeBodyEndPosition
|
protected int |
beforeBodyPosition
|
protected int |
bodyInsertPosition
|
protected int |
headerInsertPosition
|
protected static org.apache.commons.logging.Log |
log
|
protected boolean |
parserCalled
|
Fields inherited from interface org.apache.myfaces.renderkit.html.util.AddResource |
---|
BODY_END, BODY_ONLOAD, HEADER_BEGIN |
Constructor Summary | |
---|---|
protected |
DefaultAddResource()
|
Method Summary | |
---|---|
void |
addInlineScriptAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.String inlineScript)
Adds the given Inline Script at the specified document position. |
void |
addInlineStyleAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.String inlineStyle)
Adds the given Inline Style at the specified document position. |
void |
addJavaScriptAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.Class myfacesCustomComponent,
java.lang.String resourceName)
Insert a [script src="url"] entry into the document header at the specified document position. |
void |
addJavaScriptAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.Class myfacesCustomComponent,
java.lang.String resourceName,
boolean defer)
Insert a [script src="url"] entry into the document header at the specified document position. |
void |
addJavaScriptAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
ResourceHandler resourceHandler)
Adds the given Javascript resource to the document header at the specified document positioy by supplying a resourcehandler instance. |
void |
addJavaScriptAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
ResourceHandler resourceHandler,
boolean defer)
Adds the given Javascript resource at the specified document position. |
void |
addJavaScriptAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.String uri)
Insert a [script src="url"] entry into the document header at the specified document position. |
void |
addJavaScriptAtPosition(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.String uri,
boolean defer)
Adds the given Javascript resource at the specified document position. |
void |
addJavaScriptAtPositionPlain(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.Class myfacesCustomComponent,
java.lang.String resourceName)
Adds the given Javascript resource at the specified document position. |
void |
addJavaScriptHere(javax.faces.context.FacesContext context,
java.lang.Class myfacesCustomComponent,
java.lang.String resourceName)
Insert a [script src="url"] entry at the current location in the response. |
void |
addJavaScriptHere(javax.faces.context.FacesContext context,
ResourceHandler resourceHandler)
Insert a [script src="url"] entry at the current location in the response. |
void |
addJavaScriptHere(javax.faces.context.FacesContext context,
java.lang.String uri)
Insert a [script src="url"] entry at the current location in the response. |
void |
addJavaScriptHerePlain(javax.faces.context.FacesContext context,
java.lang.String uri)
Insert a [script src="url"] entry at the current location in the response. In constrast to the other methods this will not encode the url. |
void |
addJavaScriptToBodyTag(javax.faces.context.FacesContext context,
java.lang.String javascriptEventName,
java.lang.String addedJavaScript)
|
void |
addResourceHere(javax.faces.context.FacesContext context,
ResourceHandler resourceHandler)
|
void |
addStyleSheet(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.Class myfacesCustomComponent,
java.lang.String resourceName)
Adds the given Style Sheet at the specified document position. |
void |
addStyleSheet(javax.faces.context.FacesContext context,
ResourcePosition position,
ResourceHandler resourceHandler)
Adds the given Style Sheet at the specified document position. |
void |
addStyleSheet(javax.faces.context.FacesContext context,
ResourcePosition position,
java.lang.String uri)
Adds the given Style Sheet at the specified document position. |
protected java.util.Set |
getBodyEndInfos()
|
protected java.util.Set |
getBodyOnloadInfos()
|
protected long |
getCacheKey(javax.faces.context.FacesContext context)
Return a value used in the {cacheKey} part of a generated URL for a resource reference. |
protected java.util.Set |
getHeaderBeginInfos()
|
protected java.lang.String |
getResourceUri(javax.faces.context.FacesContext context,
java.lang.Class resourceLoader,
boolean withContextPath)
Get the Path used to retrieve an resource. |
java.lang.String |
getResourceUri(javax.faces.context.FacesContext context,
java.lang.Class myfacesCustomComponent,
java.lang.String resource)
|
java.lang.String |
getResourceUri(javax.faces.context.FacesContext context,
java.lang.Class myfacesCustomComponent,
java.lang.String resource,
boolean withContextPath)
|
java.lang.String |
getResourceUri(javax.faces.context.FacesContext context,
ResourceHandler resourceHandler)
Get the Path used to retrieve an resource. |
java.lang.String |
getResourceUri(javax.faces.context.FacesContext context,
ResourceHandler resourceHandler,
boolean withContextPath)
Get the Path used to retrieve an resource. |
java.lang.String |
getResourceUri(javax.faces.context.FacesContext context,
java.lang.String uri)
Get the Path used to retrieve an resource. |
java.lang.String |
getResourceUri(javax.faces.context.FacesContext context,
java.lang.String uri,
boolean withContextPath)
Get the Path used to retrieve an resource. |
protected DefaultAddResource.PositionedInfo |
getScriptInstance(javax.faces.context.FacesContext context,
java.lang.String uri,
boolean defer)
|
boolean |
hasHeaderBeginInfos()
check there is something to write to the header |
boolean |
isResourceUri(javax.servlet.ServletContext servletContext,
javax.servlet.http.HttpServletRequest request)
|
void |
parseResponse(javax.servlet.http.HttpServletRequest request,
java.lang.String bufferedResponse,
javax.servlet.http.HttpServletResponse response)
Parses the response to mark the positions where code will be inserted |
boolean |
requiresBuffer()
return true if you require the complete response buffered |
void |
responseFinished()
called when the response has finished |
void |
responseStarted()
called when the response start |
void |
serveResource(javax.servlet.ServletContext context,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
|
void |
setContextPath(java.lang.String contextPath)
the context path for the web-app. You can set the context path only once, every subsequent set will throw an SecurityException |
protected void |
validateResourceHandler(ResourceHandler resourceHandler)
Verify that the resource handler is acceptable. |
protected void |
validateResourceLoader(java.lang.Class resourceloader)
Given a Class object, verify that the instances of that class implement the ResourceLoader interface. |
void |
writeMyFacesJavascriptBeforeBodyEnd(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Writes the javascript code necessary for myfaces in every page, just befode the closing </body> tag |
void |
writeResponse(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Writes the response |
void |
writeWithFullHeader(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Add the resources to the <head> of the page. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final org.apache.commons.logging.Log log
protected java.lang.String _contextPath
protected boolean parserCalled
protected int headerInsertPosition
protected int bodyInsertPosition
protected int beforeBodyPosition
protected int afterBodyContentInsertPosition
protected int beforeBodyEndPosition
Constructor Detail |
---|
protected DefaultAddResource()
Method Detail |
---|
public void setContextPath(java.lang.String contextPath)
setContextPath
in interface AddResource
public void addJavaScriptHere(javax.faces.context.FacesContext context, java.lang.Class myfacesCustomComponent, java.lang.String resourceName) throws java.io.IOException
addJavaScriptHere
in interface AddResource
java.io.IOException
public void addJavaScriptHere(javax.faces.context.FacesContext context, java.lang.String uri) throws java.io.IOException
addJavaScriptHere
in interface AddResource
uri
- is the location of the desired resource, relative to the base
directory of the webapp (ie its contextPath).
java.io.IOException
public void addJavaScriptHerePlain(javax.faces.context.FacesContext context, java.lang.String uri) throws java.io.IOException
AddResource
addJavaScriptHerePlain
in interface AddResource
uri
- is the location of the desired resource, relative to the base
directory of the webapp (ie its contextPath).
java.io.IOException
public void addJavaScriptHere(javax.faces.context.FacesContext context, ResourceHandler resourceHandler) throws java.io.IOException
addJavaScriptHere
in interface AddResource
context
- The current faces-contextresourceHandler
- is an object which specifies exactly how to build the url
that is emitted into the script tag. Code which needs to generate URLs in ways
that this class does not support by default can implement a custom ResourceHandler.
java.io.IOException
public void addResourceHere(javax.faces.context.FacesContext context, ResourceHandler resourceHandler) throws java.io.IOException
addResourceHere
in interface AddResource
java.io.IOException
protected void validateResourceHandler(ResourceHandler resourceHandler)
resourceHandler
- handler to checkprotected void validateResourceLoader(java.lang.Class resourceloader)
resourceloader
- loader to checkpublic void addJavaScriptAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, ResourceHandler resourceHandler)
addJavaScriptAtPosition
in interface AddResource
public void addJavaScriptAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.Class myfacesCustomComponent, java.lang.String resourceName)
addJavaScriptAtPosition
in interface AddResource
public void addJavaScriptAtPositionPlain(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.Class myfacesCustomComponent, java.lang.String resourceName)
AddResource
addJavaScriptAtPositionPlain
in interface AddResource
public void addJavaScriptAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.Class myfacesCustomComponent, java.lang.String resourceName, boolean defer)
addJavaScriptAtPosition
in interface AddResource
defer
- specifies whether the html attribute "defer" is set on the
generated script tag. If this is true then the browser will continue
processing the html page without waiting for the specified script to
load and be run.public void addJavaScriptAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.String uri)
addJavaScriptAtPosition
in interface AddResource
uri
- is the location of the desired resource, relative to the base
directory of the webapp (ie its contextPath).public void addJavaScriptAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.String uri, boolean defer)
addJavaScriptAtPosition
in interface AddResource
public void addJavaScriptToBodyTag(javax.faces.context.FacesContext context, java.lang.String javascriptEventName, java.lang.String addedJavaScript)
addJavaScriptToBodyTag
in interface AddResource
public void addJavaScriptAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, ResourceHandler resourceHandler, boolean defer)
addJavaScriptAtPosition
in interface AddResource
public void addStyleSheet(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.Class myfacesCustomComponent, java.lang.String resourceName)
addStyleSheet
in interface AddResource
public void addStyleSheet(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.String uri)
addStyleSheet
in interface AddResource
public void addStyleSheet(javax.faces.context.FacesContext context, ResourcePosition position, ResourceHandler resourceHandler)
addStyleSheet
in interface AddResource
public void addInlineStyleAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.String inlineStyle)
addInlineStyleAtPosition
in interface AddResource
public void addInlineScriptAtPosition(javax.faces.context.FacesContext context, ResourcePosition position, java.lang.String inlineScript)
addInlineScriptAtPosition
in interface AddResource
public java.lang.String getResourceUri(javax.faces.context.FacesContext context, java.lang.Class myfacesCustomComponent, java.lang.String resource, boolean withContextPath)
getResourceUri
in interface AddResource
public java.lang.String getResourceUri(javax.faces.context.FacesContext context, java.lang.Class myfacesCustomComponent, java.lang.String resource)
getResourceUri
in interface AddResource
public java.lang.String getResourceUri(javax.faces.context.FacesContext context, ResourceHandler resourceHandler)
getResourceUri
in interface AddResource
public java.lang.String getResourceUri(javax.faces.context.FacesContext context, ResourceHandler resourceHandler, boolean withContextPath)
getResourceUri
in interface AddResource
public java.lang.String getResourceUri(javax.faces.context.FacesContext context, java.lang.String uri)
getResourceUri
in interface AddResource
public java.lang.String getResourceUri(javax.faces.context.FacesContext context, java.lang.String uri, boolean withContextPath)
getResourceUri
in interface AddResource
protected java.lang.String getResourceUri(javax.faces.context.FacesContext context, java.lang.Class resourceLoader, boolean withContextPath)
context
- current faces-contextresourceLoader
- resourceLoaderwithContextPath
- use the context-path of the web-app when accessing the resources
protected long getCacheKey(javax.faces.context.FacesContext context)
context
- the current faces-context
public boolean isResourceUri(javax.servlet.ServletContext servletContext, javax.servlet.http.HttpServletRequest request)
isResourceUri
in interface AddResource
public void serveResource(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException
serveResource
in interface AddResource
java.io.IOException
protected java.util.Set getHeaderBeginInfos()
protected java.util.Set getBodyEndInfos()
protected java.util.Set getBodyOnloadInfos()
public boolean hasHeaderBeginInfos()
AddResource
hasHeaderBeginInfos
in interface AddResource
public void parseResponse(javax.servlet.http.HttpServletRequest request, java.lang.String bufferedResponse, javax.servlet.http.HttpServletResponse response)
parseResponse
in interface AddResource
public void writeMyFacesJavascriptBeforeBodyEnd(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException
writeMyFacesJavascriptBeforeBodyEnd
in interface AddResource
java.io.IOException
public void writeWithFullHeader(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException
writeWithFullHeader
in interface AddResource
java.io.IOException
public void writeResponse(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException
writeResponse
in interface AddResource
java.io.IOException
protected DefaultAddResource.PositionedInfo getScriptInstance(javax.faces.context.FacesContext context, java.lang.String uri, boolean defer)
public boolean requiresBuffer()
AddResource
requiresBuffer
in interface AddResource
public void responseStarted()
AddResource
responseStarted
in interface AddResource
public void responseFinished()
AddResource
responseFinished
in interface AddResource
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |