Tutoriel JSF2 N°9 : Gestion Événements

////Tutoriel JSF2 N°9 : Gestion Événements

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 ?

presentation-objis-conseil-formation-java-soa2.png

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

utilisation de l'attribut valueChangeListner

 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.

main.xhtml

 La méthode qui réalise les traitements lors de l’interception de l’évènement.

methode changeCodeLocalePays

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 du locale de la langue
Choix d’une autre langue
renduValueChange2

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.

utilisation du tag valueChangeListner

 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.

implémentation de l'interface

 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.

boutton ActionListner

— Téléchargez le zip du fichier main.xhtml

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.

btonActionBean

— Téléchargez le zip du fichier

CountryBean

— L’exécution de l’application sur le serveur cible Tomcat donne les rendus suivants:
actionListnerBouton.png

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.

tagActionListner.png

— Une telle classe doit définir la méthode processAction() définie dans l’interface.

beanTagActionListner.png

— L’exécution de l’application sur le serveur cible Tomcat donne les rendus suivants:

renduTagActionlistner.png
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

programme détaillé JSF 2

2018-01-29T17:20:52+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java