background image

Performing Decoding

<< The Encoding Methods | The setProperties Method >>
<< The Encoding Methods | The setProperties Method >>

Performing Decoding

Performing Decoding
During the apply request values phase, the JavaServer Faces implementation processes the
decode
methods of all components in the tree. The decode method extracts a component's local
value from incoming request parameters and uses a Converter class to convert the value to a
type that is acceptable to the component class.
A custom component class or its renderer must implement the decode method only if it must
retrieve the local value or if it needs to queue events. The MapRenderer instance retrieves the
local value of the hidden input field and sets the current attribute to this value by using its
decode
method. The setCurrent method of MapComponent queues the event by calling
queueEvent
, passing in the AreaSelectedEvent instance generated by MapComponent.
Here is the decode method of MapRenderer:
public void decode(FacesContext context, UIComponent component) {
if ((context == null) || (component == null)) {
throw new NullPointerException();
}
MapComponent map = (MapComponent) component;
String key = getName(context, map);
String value = (String)context.getExternalContext().
getRequestParameterMap().get(key);
if (value != null)
map.setCurrent(value);
}
}
The decode method first gets the name of the hidden input field by calling
getName(FacesContext, UIComponent)
. It then uses that name as the key to the request
parameter map to retrieve the current value of the input field. This value represents the
currently selected area. Finally, it sets the value of the MapComponent class's current attribute to
the value of the input field.
Enabling Component Properties to Accept
Expressions
Nearly all the attributes of the standard JavaServer Faces tags can accept expressions, whether
they are value expressions or method expressions. It is recommended that you also enable your
component attributes to accept expressions because this is what page authors expect, and it
gives page authors much more flexibility when authoring their pages.
Creating Custom Component Classes
The Java EE 5 Tutorial · September 2007
424