public abstract class RenderKit
extends java.lang.Object
RenderKit
represents a collection of Renderer
instances that, together,
know how to render Jakarta Server Faces UIComponent
instances for
a specific client. Typically, RenderKit
s 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 and Description |
---|
RenderKit() |
Modifier and Type | Method and Description |
---|---|
void |
addClientBehaviorRenderer(java.lang.String type,
ClientBehaviorRenderer renderer)
Register the specified
ClientBehaviorRenderer instance,
associated with the specified component type ,
to the set of ClientBehaviorRenderer s registered with this
RenderKit , replacing any previously registered
ClientBehaviorRenderer for this type. |
abstract void |
addRenderer(java.lang.String family,
java.lang.String rendererType,
Renderer renderer)
|
abstract ResponseStream |
createResponseStream(java.io.OutputStream out)
Use the provided
OutputStream to create a new
ResponseStream instance. |
abstract ResponseWriter |
createResponseWriter(java.io.Writer writer,
java.lang.String contentTypeList,
java.lang.String characterEncoding)
Use the provided
Writer to create a new ResponseWriter instance for the specified (optional) content
type, and character encoding. |
ClientBehaviorRenderer |
getClientBehaviorRenderer(java.lang.String type)
Return the
ClientBehaviorRenderer instance most recently
registered for the specified type , if any;
otherwise, return null . |
java.util.Iterator<java.lang.String> |
getClientBehaviorRendererTypes()
Return an |
java.util.Iterator<java.lang.String> |
getComponentFamilies()
Return an |
abstract Renderer |
getRenderer(java.lang.String family,
java.lang.String rendererType)
Return the
Renderer instance most recently registered for
the specified component family and
rendererType , if any; otherwise, return
null . |
java.util.Iterator<java.lang.String> |
getRendererTypes(java.lang.String componentFamily)
Return an |
abstract ResponseStateManager |
getResponseStateManager()
Return an instance of
ResponseStateManager to handle
rendering technology specific state management decisions. |
public abstract void addRenderer(java.lang.String family, java.lang.String rendererType, Renderer renderer)
public abstract Renderer getRenderer(java.lang.String family, java.lang.String rendererType)
Return the Renderer
instance most recently registered for
the specified component family
and
rendererType
, if any; otherwise, return
null
.
public abstract ResponseStateManager getResponseStateManager()
Return an instance of ResponseStateManager
to handle
rendering technology specific state management decisions.
ResponseStateManager
public abstract ResponseWriter createResponseWriter(java.io.Writer writer, java.lang.String contentTypeList, java.lang.String characterEncoding)
Use the provided Writer
to create a new ResponseWriter
instance for the specified (optional) content
type, and character encoding.
Implementors are advised to consult the
getCharacterEncoding()
method of class ServletResponse
to get the required value for the
characterEncoding for this method. Since the Writer
for 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.
writer
- the Writer around which this ResponseWriter
must be built.contentTypeList
- an "Accept header style" list of content
types for this response, or null
if 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
String text/html
,
application/xhtml+xml
, application/xml
or text/xml
. This may change in a future version.
The RenderKit must support a value for this argument that comes
straight from the Accept
HTTP header, and therefore
requires parsing according to the specification of the
Accept
header. Please see Section
14.1 of RFC 2616 for the specification of the
Accept
header.characterEncoding
- such as "ISO-8859-1" for this
ResponseWriter, or null
if the
RenderKit
should choose the best fit. Please see the
IANA for a list of character encodings.ResponseWriter
.java.lang.IllegalArgumentException
- if no matching content type
can be found in contentTypeList
, no appropriate
content type can be found with the implementation dependent best
fit algorithm, or no matching character encoding can be found for
the argument characterEncoding
.public abstract ResponseStream createResponseStream(java.io.OutputStream out)
Use the provided OutputStream
to create a new
ResponseStream
instance.
out
- the OutputStream
around which to create the
ResponseStream
ResponseStream
public java.util.Iterator<java.lang.String> getComponentFamilies()
Return an Iterator
over
the component-family entries supported by this
RenderKit
instance.
The default implementation of this method returns an empty
Iterator
Iterator
over
the component-family entriespublic java.util.Iterator<java.lang.String> getRendererTypes(java.lang.String componentFamily)
Return an Iterator
over
the renderer-type entries for the given component-family.
If the specified componentFamily
is not known to this RenderKit
implementation, return
an empty Iterator
The default implementation of this method returns an empty
Iterator
componentFamily
- one of the members of the
Iterator
returned by getComponentFamilies()
.Iterator
over the renderer-typepublic void addClientBehaviorRenderer(java.lang.String type, ClientBehaviorRenderer renderer)
Register the specified ClientBehaviorRenderer
instance,
associated with the specified component type
,
to the set of ClientBehaviorRenderer
s registered with this
RenderKit
, replacing any previously registered
ClientBehaviorRenderer
for this type.
type
- type of the ClientBehaviorRenderer
to registerrenderer
- ClientBehaviorRenderer
instance we are registeringjava.lang.NullPointerException
- if type
or
renderer
is nullpublic ClientBehaviorRenderer getClientBehaviorRenderer(java.lang.String type)
Return the ClientBehaviorRenderer
instance most recently
registered for the specified type
, if any;
otherwise, return null
.
type
- type of the requested
ClientBehaviorRenderer
instanceClientBehaviorRenderer
instancejava.lang.NullPointerException
- if type
is null
public java.util.Iterator<java.lang.String> getClientBehaviorRendererTypes()
Return an Iterator
over
the ClientBehaviorRenderer
types.
Iterator
over
the ClientBehaviorRenderer