Dopo aver presentato i
Custom Converter, passiamo all'analisi degli
Event listener. Come visto in precedenza, l’implementazione
JSF permette di gestire due tipologie di eventi, che si possono verificare sui componenti della UI:
- action event;
- value-change event.
Tale gestione, può essere eseguita in due modi diversi:
- realizzando una classe listener, che implementi l’interfaccia ActionListener oppure ValueChangeListener;
- realizzando, all’interno di un certo backing bean, un metodo che sia capace di gestire l’evento.
Passiamo ora alla descrizione dell'
implementazione di un ActionListener/ValueChangeListener.
Per poter gestire un action event, che può essere sollevato da un componente,
è possibile sviluppare una classe che implementi l’interfaccia ActionListener. All’interno di essa sarà eseguito l’overriding del metodo processAction(), il quale prevede, come parametro di ingresso, un oggetto di tipo
ActionEvent con tutte le informazioni sull’evento e sul componente che l’ha generato.
Nel
processAction() sarà necessario scrivere il codice per la gestione dell’evento, in quanto il metodo sarà immediatamente invocato nel momento in cui l’evento sarà intercettato. Una volta realizzata la classe, essa sarà associata ad un componente utilizzando il tag
< f:actionListener >.
Per poter gestire un value-change event, la logica non cambia, in quanto è possibile realizzare una classe che implementi l’interfaccia ValueChangeListener; lo sviluppatore deve semplicemente eseguire l’overriding del metodo processValueChange(), il quale ha un parametro di ingresso di tipo
ValueChangeEvent con le informazioni sull’evento che si è verificato.
Per registrare la classe
listener sul componente si utilizza il tag
< f:valueChangeListener > della
Core Library di
JSF.
Una possibile strada alternativa alla realizzazione delle classi listener è lo sviluppo di alcuni metodi all’interno dei backing bean, che abbiano la capacità di gestire gli eventi (Backing Bean Method Listener).
Nel caso in cui bisogna gestire un
action event è possibile realizzare un metodo che non ha parametri di uscita e ha come unico parametro di ingresso un oggetto di tipo
ActionEvent con le informazioni dell’evento intercettato. Tale metodo potrà essere associato al componente utilizzando l’attributo
actionListener del tag, che rappresenta il componente stesso all’interno di una pagina.
<span style="font-size:1.0em">< h:commandLink actionListener="#{backingBean.metodoListener}"/ ></span>
In presenza di un
value-change event, invece, bisogna realizzare un metodo che abbia come parametro di ingresso un oggetto del tipo
ValueChangeEvent, associato al componente mediante l’attributo
valueChangeListener del medesimo tag.
<span style="font-size:1.0em">< h:inputText valueChangeListener="#{backingBean.metodoListener}"/ ></span>