Avec Objis, spécialiste formation JSF, comprenez la gestion des événements à base de composants fournit par JSF
Objectifs
Mettre en œuvre la gestion des événement sur un composant JSF.
Programme
Contexte et rappels
Partie 1: gestion changements de valeur
Partie 2: gestion actions
Durée
15 min.
Qui sommes-nous ?
Contexte et rappels
La gestion des événements repose donc sur deux types d’objets
Event : classe qui encapsule l’événement lui même
Listener : classe qui va encapsuler les traitements à réaliser pour un type d’événements
INFO 1 : Un objet de type Event encapsule le composant à l’origine de l’événement et des données relatives à cet événement.
INFO 2 : Pour être notifié d’un événement particulier, il est nécessaire d’enregistrer un objet qui implémente l’interface Listener auprès du composant concerné.
Lors de certaines actions de l’utilisateur, un événement est émis.
L’implémentation JSF propose deux types d’événements :
ValueChanged : ces événements sont émis lors du changement de la valeur d’un composant de type UIInput, UISelectOne, UISelectMany, et UISelectBoolean
Action : ces événements sont émis lors d’un clic sur un hyperlien ou un bouton qui sont des composants de type UICommand
Comme pour les interfaces graphiques des applications standalone, la classe de type Listener doit s’enregistrer auprès du composant concerné. Lorsque celui-ci émet un événement suite à une action de l’utilisateur, il appelle le Listener enregistré en lui fournissant en paramètre un objet de type Event.
IMPORTANT:
JSF supporte trois types d’événements :
1) Les changements de valeurs : concernent les composants qui permettent la saisie ou la sélection d’une valeur et que cette valeur change
2) Les actions : concernent un clic sur un bouton (commandButton) ou un lien (commandLink)
3) Les événements liés au cycle de vie : ils sont émis par le framework JSF durant le cyle de vie des traitements
Partie 1: gestion Changement valeur
Découvrez deux façons de préciser un listener de type valueChangeListener sur un composant :
METHODE 1 : utiliser l’attribut valueChangeListener
L’attribut valueChangeListener permet de préciser une expression qui désigne une méthode(changeCodeLocalePays) qui sera exécutée durant les traitements du cyle de vie de la requête. Pour que ces traitements puissent être déclenchés, il faut soumettre la page.
Téléchargez et copiez la vue main.xhtml dans le dossier WebContent.
La méthode qui réalise les traitements lors de l’interception de l’évènement.
Info:
l’objet ValueChangeEvent en paramètre de la méthode, possède plusieurs méthodes utiles:
— UIComponent getComponent(): renvoie le composant qui a généré l’événement.
— Object getNewValue(): renvoie la nouvelle valeur (convertie et validée)
— Object getOldValue(): renvoie la valeur précédente
Télécharger et installer dans le package com.objisformation.jsf2 beanCountryBean.java contenant la méthode
CountryBean.java
A ce stade l’exécution de l’application sur le serveur cible Tomcat donne les rendus suivants:
Choix d’une autre langue
METHODE 2 : utiliser la balise valueChangeListener
La balise ‘valueChangeListener’ permet aussi de préciser un listener.
Son attribut type permet de préciser une classe implémentant l’interface ValueChangeListener.
Téléchargez le fichier complet main.xhtml ci-dessous:
main.xml
Une telle classe doit définir une méthode processValueChange() qui va contenir les traitements exécutés en réponse à l’événement.
Téléchagez le bean ChoixLangueListener.java
bean implémentant ValueChangeListner
Partie 2: gestion actions
Découvrez deux façons de préciser un listener de type actionListener sur un composant de type bouton ou lien:
METHODE 1 : utiliser l’attribut actionListener
L’attribut actionListener permet de préciser une expression qui désigne une méthode qui sera exécutée durant les traitements du cycle de vie de la requête.
— Téléchargez le zip du fichier main.xhtml
La méthode qui réalise les traitements lors de l’interception de l’évènement attend en paramètre un objet de type ActionEvent.
— Téléchargez le zip du fichier
— L’exécution de l’application sur le serveur cible Tomcat donne les rendus suivants:
METHODE 2 : utiliser la balise actionListener
— Le tag actionListener: permet aussi de préciser un listener. Son attribut type permet de préciser une classe implémentant l’interface ActionListener.
— Une telle classe doit définir la méthode processAction() définie dans l’interface.
— L’exécution de l’application sur le serveur cible Tomcat donne les rendus suivants:
INFO:
— L’attribut immediate permet de demander les traitements immédiat des listeners.
Par exemple, sur une page un composant possède un attribut required et un second possède un listener. Les traitements du second doivent pouvoir être réalisés sans que le premier composant n’affiche un message d’erreur lié à sa validation.
Le cycle de traitement de la requête est modifié lorsque l’attribut immediate est positionné dans un composant. Dans ce cas, les données du composant sont converties et validées si nécessaire puis les traitements du listener sont exécutés à la place de l’étape Process validations
Conclusion
Dans ce tutoriel, vous avez compris Le modèle de gestion des événements avec JSF et mis en œuvre les différentes techniques de gestion des événements.
Formation JSF
Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur JSF : Formation JSF