Class RenderKit
- Direct Known Subclasses:
RenderKitWrapper
RenderKit represents a collection of Renderer
instances that, together, know how to render Jakarta Server Faces UIComponent instances for a specific
client. Typically, RenderKits are specialized for some combination of client device type, markup language,
and/or user Locale. A RenderKit also acts as a Factory for associated Renderer
instances, which perform the actual rendering process for each component.
A typical Jakarta Server Faces implementation will configure one or more RenderKit instances at web
application startup. They are made available through calls to the getRenderKit() methods of
RenderKitFactory. Because RenderKit instances are shared, they must be implemented in a thread-safe
manner. Due to limitations in the current specification having multiple RenderKit instances at play in
the same application requires a custom ViewHandler instance that is aware of how to
deal with this case. This limitation will be lifted in a future version of the spec.
The RenderKit instance must also vend a ResponseStateManager instance, which is used in the
process of saving and restoring tree structure and state.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddClientBehaviorRenderer(String type, ClientBehaviorRenderer renderer) Register the specifiedClientBehaviorRendererinstance, associated with the specified componenttype, to the set ofClientBehaviorRenderers registered with thisRenderKit, replacing any previously registeredClientBehaviorRendererfor this type.abstract voidaddRenderer(String family, String rendererType, Renderer renderer) abstract ResponseStreamUse the providedOutputStreamto create a newResponseStreaminstance.abstract ResponseWritercreateResponseWriter(Writer writer, String contentTypeList, String characterEncoding) Use the providedWriterto create a newResponseWriterinstance for the specified (optional) content type, and character encoding.Return theClientBehaviorRendererinstance most recently registered for the specifiedtype, if any; otherwise, returnnull.Return anIteratorover theClientBehaviorRenderertypes.Return anIteratorover the component-family entries supported by thisRenderKitinstance.abstract RenderergetRenderer(String family, String rendererType) Return theRendererinstance most recently registered for the specified componentfamilyandrendererType, if any; otherwise, returnnull.getRendererTypes(String componentFamily) Return anIteratorover the renderer-type entries for the given component-family.abstract ResponseStateManagerReturn an instance ofResponseStateManagerto handle rendering technology specific state management decisions.
-
Constructor Details
-
RenderKit
public RenderKit()
-
-
Method Details
-
addRenderer
Register the specified
Rendererinstance, associated with the specified componentfamilyandrendererType, to the set ofRenderers registered with thisRenderKit, replacing any previously registeredRendererfor this combination of identifiers.- Parameters:
family- Component family of theRendererto registerrendererType- Renderer type of theRendererto registerrenderer-Rendererinstance we are registering- Throws:
NullPointerException- iffamilyorrendererTypeorrendereris null
-
getRenderer
Return the
Rendererinstance most recently registered for the specified componentfamilyandrendererType, if any; otherwise, returnnull.- Parameters:
family- Component family of the requestedRendererinstancerendererType- Renderer type of the requestedRendererinstance- Returns:
- the
Rendererinstance - Throws:
NullPointerException- iffamilyorrendererTypeisnull
-
getResponseStateManager
Return an instance of
ResponseStateManagerto handle rendering technology specific state management decisions.- Returns:
- the
ResponseStateManager
-
createResponseWriter
public abstract ResponseWriter createResponseWriter(Writer writer, String contentTypeList, String characterEncoding) Use the provided
Writerto create a newResponseWriterinstance for the specified (optional) content type, and character encoding.Implementors are advised to consult the
getCharacterEncoding()method of classServletResponseto get the required value for the characterEncoding for this method. Since theWriterfor this response will already have been obtained (due to it ultimately being passed to this method), we know that the character encoding cannot change during the rendering of the response.- Parameters:
writer- the Writer around which thisResponseWritermust be built.contentTypeList- an "Accept header style" list of content types for this response, ornullif the RenderKit should choose the best fit. As of the current version, the values accepted by the Standard render-kit for this parameter include any valid "Accept header style" String that includes the Stringtext/html,application/xhtml+xml,application/xmlortext/xml. This may change in a future version. The RenderKit must support a value for this argument that comes straight from theAcceptHTTP header, and therefore requires parsing according to the specification of theAcceptheader. Please see Section 14.1 of RFC 2616 for the specification of theAcceptheader.characterEncoding- such as "ISO-8859-1" for this ResponseWriter, ornullif theRenderKitshould choose the best fit. Please see the IANA for a list of character encodings.- Returns:
- a new
ResponseWriter. - Throws:
IllegalArgumentException- if no matching content type can be found incontentTypeList, no appropriate content type can be found with the implementation dependent best fit algorithm, or no matching character encoding can be found for the argumentcharacterEncoding.
-
createResponseStream
Use the provided
OutputStreamto create a newResponseStreaminstance.- Parameters:
out- theOutputStreamaround which to create theResponseStream- Returns:
- the new
ResponseStream
-
getComponentFamilies
Return an
Iteratorover the component-family entries supported by thisRenderKitinstance.The default implementation of this method returns an empty
Iterator- Returns:
- Return an
Iteratorover the component-family entries - Since:
- 2.0
-
getRendererTypes
Return an
Iteratorover the renderer-type entries for the given component-family.If the specified
componentFamilyis not known to thisRenderKitimplementation, return an emptyIteratorThe default implementation of this method returns an empty
Iterator- Parameters:
componentFamily- one of the members of theIteratorreturned bygetComponentFamilies().- Returns:
- an
Iteratorover the renderer-type - Since:
- 2.0
-
addClientBehaviorRenderer
Register the specified
ClientBehaviorRendererinstance, associated with the specified componenttype, to the set ofClientBehaviorRenderers registered with thisRenderKit, replacing any previously registeredClientBehaviorRendererfor this type.- Parameters:
type- type of theClientBehaviorRendererto registerrenderer-ClientBehaviorRendererinstance we are registering- Throws:
NullPointerException- iftypeorrendereris null- Since:
- 2.0
-
getClientBehaviorRenderer
Return the
ClientBehaviorRendererinstance most recently registered for the specifiedtype, if any; otherwise, returnnull.- Parameters:
type- type of the requestedClientBehaviorRendererinstance- Returns:
- the
ClientBehaviorRendererinstance - Throws:
NullPointerException- iftypeisnull- Since:
- 2.0
-
getClientBehaviorRendererTypes
Return an
Iteratorover theClientBehaviorRenderertypes.- Returns:
- an
Iteratorover theClientBehaviorRenderer - Since:
- 2.0
-