background image

Component Renderer and Tag Combinations

<< When to Use a Custom Renderer | Understanding the Image Map Example >>
<< When to Use a Custom Renderer | Understanding the Image Map Example >>

Component Renderer and Tag Combinations

If you aren't sure whether you will need the flexibility offered by separate renderers but you
want to use the simpler direct-implementation approach, you can actually use both models.
Your component class can include some default rendering code, but it can delegate rendering to
a renderer if there is one.
Component, Renderer, and Tag Combinations
When you create a custom component, you will usually create a custom renderer to go with it.
You will also need a custom tag to associate the component with the renderer and to reference
the component from the page.
In rare situations, however, you might use a custom renderer with a standard component rather
than a custom component. Or you might use a custom tag without a renderer or a component.
This section gives examples of these situations and summarizes what's required for a custom
component, renderer, and tag.
You would use a custom renderer without a custom component if you wanted to add some
client-side validation on a standard component. You would implement the validation code with
a client-side scripting language, such as JavaScript, and then render the JavaScript with the
custom renderer. In this situation, you need a custom tag to go with the renderer so that its tag
handler can register the renderer on the standard component.
Custom components as well as custom renderers need custom tags associated with them.
However, you can have a custom tag without a custom renderer or custom component. For
example, suppose that you need to create a custom validator that requires extra attributes on the
validator tag. In this case, the custom tag corresponds to a custom validator and not to a custom
component or custom renderer. In any case, you still need to associate the custom tag with a
server-side object.
Table 13­1
summarizes what you must or can associate with a custom component, custom
renderer, or custom tag.
TABLE 13­1
Requirements for Custom Components, Custom Renderers, and Custom Tags
Custom Item
Must Have
Can Have
Custom component
Custom tag
Custom renderer or standard renderer
Custom renderer
Custom tag
Custom component or standard
component
Custom JavaServer
Faces tag
Some server-side object, like a component,
a custom renderer, or custom validator
Custom component or standard
component associated with a custom
renderer
Determining Whether You Need a Custom Component or Renderer
The Java EE 5 Tutorial · September 2007
412