Developing Custom Renderers
Developing a custom renderer is
relatively simple. All renderers
extend an abstract class called
javax.faces.render.Renderer
. Subclasses of this
class are attached to components and are responsible for
rendering (or
encoding, as it’s called in the
specification) the component and, if it’s an input
component, for decoding the submitted value to the
component’s internal representation.
A component is equipped with a renderer of a specific type by calling
the component’s setRendererType(
)
method. The
renderer type is an identifier
that’s unique per component
family. Each
component belongs to a
component family, which identifies the basic nature of a component,
e.g., that it’s an output component or a command
component. Which renderer class to use for a component is determined
by the combination of the renderer type the component is equipped
with and the family it belongs to. Picking a renderer class based on
the combination of the two IDs makes it possible to use the same,
intuitive renderer type IDs for renderer classes with widely
different behavior, each class registered for a different component
family. For instance, the renderer type ID
javax.faces.Link
combined with the
javax.faces.Output
family can identify a renderer
class that renders a regular HTML link element with the
component’s value as the URL, and the same renderer
type ID combined with the javax.faces.Command
family can identify another renderer class that renders an HTML link element ...
Get JavaServer Faces now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.