Home | Download | PDF | API | FAQ | Search | Feedback | History

> ## Steps for Creating a Custom Component

> Before we describe how the image map works, let's summarize the basic steps for creating custom components. You can apply the following steps while developing your own custom component.

> 1. Create a custom component class that does the following
> 1. Overrides the `getFamily` method to return the component family, which is used to look up renderers that can render the component.
> 2. Includes the rendering code or delegates it to a renderer (explained in step 4).
> 3. Enables component attributes to accept expressions.
> 4. Queues an event on the component if the component generates events.
> 5. Saves and restores the component state.
> 2. Delegate rendering to a renderer if your component does not handle the rendering. To do this:
> 1. Create a custom renderer class by extending `javax.faces.render.Renderer`.
> 2. Register the renderer to a render kit.
> 3. Identify the renderer type in the component tag handler.
> 3. Register the component.
> 4. Create an event handler if your component generates events.
> 5. Write a tag handler class that extends `javax.faces.webapp.UIComponentELTag`. In this class, you need a `getRendererType` method, which returns the type of your custom renderer if you are using one (explained in step 2); a `getComponentType` method, which returns the type of the custom component; and a `setProperties` method, with which you set all the new attributes of your component
> 6. Create a tag library descriptor (TLD) that defines the custom tag.

> The application architect does the work of registering the custom component and the renderer. See Registering a Custom Converter (page 464) and Registering a Custom Renderer with a Render Kit (page 468) for more information. Using a Custom Component (page 376) discusses how to use the custom component in a JavaServer Faces page.