Java Reference
In-Depth Information
•
javax.faces.event.SystemEventListenerHolder
: Maintains a list
of
javax.faces.event.SystemEventListener
instances for each type
of
javax.faces.event.SystemEvent
defined by that class.
•
javax.faces.component.behavior.ClientBehaviorHolder
:
Adds the ability to attach
javax.faces.component.behavior.ClientBehavior
instances such
as a reusable script.
UICommand
implements
ActionSource2
and
StateHolder
.
UIOutput
and
component classes that extend
UIOutput
implement
StateHolder
and
ValueHolder
.
UIInput
and component classes that extend
UIInput
implement
EditableValueHolder
,
StateHolder
,
and
ValueHolder
.
UIComponen-
tBase
implements
StateHolder
.
Only component writers will need to use the component classes and behavioral interfaces
directly. Page authors and application developers will use a standard component by in-
cluding a tag that represents it on a page. Most of the components can be rendered in
different ways on a page. For example, a
UICommand
component can be rendered as a
button or a hyperlink.
The next section explains how the rendering model works and how page authors can
choose to render the components by selecting the appropriate tags.
Component Rendering Model
The JavaServer Faces component architecture is designed such that the functionality of
the components is defined by the component classes, whereas the component rendering
can be defined by a separate renderer class. This design has several benefits, including the
following:
• Component writers can define the behavior of a component once but create mul-
tiple renderers, each of which defines a different way to render the component to
the same client or to different clients.
• Page authors and application developers can change the appearance of a compon-
ent on the page by selecting the tag that represents the appropriate combination of
component and renderer.
A
render kit
defines how component classes map to component tags that are appropriate
for a particular client. The JavaServer Faces implementation includes a standard HTML
render kit for rendering to an HTML client.