Registering Listeners on Components
A page author can register a listener implementation class on a component by nesting either a
valuechangeListenertag or anactionListenertag within the component's tag on the page.An application developer can instead implement these listeners as backing bean methods. To reference these methods, a page author uses the component tag's
valueChangeListenerandactionListenerattributes, as described in Referencing a Method That Handles an Action Event and Referencing a Method That Handles a Value-change Event.The Duke's Bookstore application includes a
ValueChangeListenerimplementation class but does not use anActionListenerimplementation class. This section explains how to register theNameChangedvalue-change listener and a hypotheticalLocaleChangeaction listener implementation on components. Implementing Value-Change Listeners explains how to implementNameChanged. Implementing Action Listeners explains how to implement the hypotheticalLocaleChange.Registering a Value-Change Listener on a Component
A page author can register a
ValueChangeListenerimplementation on aUIInputcomponent or a component represented by one of the subclasses ofUIInputby nesting avalueChangeListenertag within the component's tag on the page. Here is the tag corresponding to thenamecomponent from thebookcashier.jsppage:<h:inputText id="name" size="50" value="#{cashier.name}" required="true"> <f:valueChangeListener type="listeners.NameChanged" /> </h:inputText>The
typeattribute of thevalueChangeListenertag specifies the fully qualified class name of theValueChangeListenerimplementation.After this component tag is processed and local values have been validated, its corresponding component instance will queue the
ValueChangeEventassociated with the specifiedValueChangeListenerto the component.Registering an Action Listener on a Component
A page author can register an
ActionListenerimplementation on aUICommandcomponent by nesting anactionListenertag within the component's tag on the page. Duke's Bookstore does not use anyActionListenerimplementations. Here is one of thecommandLinktags on thechooselocale.jsppage, changed to reference anActionListenerimplementation rather than a backing bean method:<h:commandLink id="NAmerica" action="bookstore"> <f:actionListener type="listeners.LocaleChange" /> </h:commandLink>The
typeattribute of theactionListenertag specifies the fully qualified class name of theActionListenerimplementation.When this tag's component is activated, the component's
decodemethod (or its associatedRenderer) automatically queues theActionEventimplementation associated with the specifiedActionListenerimplementation onto the component.