Tutoriel JSF2 N°4 : Managed Bean & JSF EL

Avec Objis, spécialiste formation JSF, découvrez la valeur ajoutée des annotations introduite avec JSF 2 pour la gestion des beans Managés. Comprenez la notion de ’scope’, ainsi que la notion de ’cycle de vie’ des beans. Enfin faite communiquez les beans managés et vos composants IHM grâce à JSF Expression Language (JSF EL)

Objectifs

- Comprendre la déclaration des Managed beans
- Comprendre l’importance de JSF Expression Language (JSF EL)

Programme

- Contexte et objectifs
- Partie 1 : Codage d’un bean managé
- Partie 2 : Codage d’une vue associée à ce bean managé
- Partie 3 : Déploiement

- Partie 2 : Comprendre l’importance du langage d’expression unifié de JSF 2 (EL)

Durée

30 min.

Contexte

- Vous souhaitez gérer les données de vos vues via des Managed Beans avec JSF 2. Vous utilisez à cette fin le langage JSF Expression Language .

Partie 1 : Comprendre les Managed beans

- Un bean Managé est une classe Java annotée. Il exécute la logique métier (ou la délèguent aux EJB, par exemple), gère la navigation entre les pages ainsi que l’état les données d’une page.
- Une application JSF typique contient un ou plusieurs beans managé - Plusieurs pages peuvent partager le même bean managé.
- Les données d’une page JSF sont stockées dans les attributs du bean managé , qui, en ce cas, est également appelé "backing bean".
- Un backing bean définit les données auxquelles est lié un composant de l’interface utilisateur (la cible d’un formulaire, par exemple).
- Le langage EL (Expression Langage ) permet de faire le lien entre un composant vue JSF et le bean managé associé.
- Dans une application JSF, les traitements liés directement à l’interface utilisateur sont écrits dans les backing beans,
- Ces backing beans font appels à des EJB ou des classes Java ordinaire pour effectuer les traitements qui ne sont pas liés directement à l’interface utilisateur.

PROJET ECLIPSE

- Téléchargez le Zip du projet

Zip - 2.3 Mo
Zip projet

Partie 2 : Création du bean managé ’UserBean’

- Créez un package ’com.objis.demojsf.beans’
- Dans ce package, créez une classe java ’UserBean’ , avec son constructeur sans arguments ainsi que ses Getters et Setters comme suit :

PNG - 9.4 ko
tutoriel-jsf-managed-bean-1

REMARQUE : à cette étape du codage, il s’agit d’une simple classe java, et non d’un Managed Bean JSF2.

- Ajoutez l’annotation @ManagedBean au dessus de la déclaration de la classe :

PNG - 12.3 ko
tutoriel-jsf-managed-bean-2

- 

PNG - 9.4 ko
tutoriel-jsf-managed-bean-3

En utilisant la documentation des beans managés , expliquez le rôle de cette annotation.

INFO : La présence de cette annotation à l’exécution enregister systématiquement cette classe comme étant un bean managé JSF2. Cette classe sera scannée au démarrage de l’application, avant la première requête.

- En utilisation la documentation JSF , expliquez les 2 paramètres possibles de cette annotation : ’name’ et ’eager’

PNG - 7.6 ko
tutoriel-jsf-managed-bean-4

- Donnez au bean le nom ’userbean’

PNG - 12.4 ko
tutoriel-jsf-managed-bean-5

QUESTION, quel serait le nom ’par defaut’ du bean si nous n’avions pas donné le nom ’userbean’ ?

QUESTION : que se passe t’il si dans un projet 2 beans ont le même nom ?

- Expliquez l’annotation SessionScoped. Quel est le scope par défaut ?

- Imposez un scope ’Session’

PNG - 8 ko
tutoriel-jsf-managed-bean-6

QUESTION : le constructeur sans argument est t’il nécessaire pour le bean managé ? Que se passe t’il s’il n’y en a pas ?

Partie 2:Comprendre l’importance de JSF Expression Language (JSF EL)

- JSF EL, propose un mécanisme de communication entre les composants de la couche Vue et la logique applicative représentée par les Managed Beans.

- JSF utilise le langage EL pour les fonctionnalités suivantes :
— > La réalisation des évaluations immédiates et différées des expressions.
— > L’écriture des données vers un Managed Bean.
— > Le déclenchement des méthodes d’un Managed Bean.
— > La réalisation des opérations arithmétiques.

- Afin d’accéder en écrire comme en lecture aux propriétés du Managed Bean UserBean.java définit par l’annotaion @ManagedBean(name="userbean" ) on utilise le nom du bean "userbean" suivi du nom de la propriété ou du nom de la méthode du Managed bean #userbean.xxx

Partie 3 :Mise en situation pratique

- Téléchargez

Zip - 885 octets
register.xhtml

- Copiez le fichier dans WebContent du projet Eclipse.
- En utilisant le langage d’expression JSF, comme ci-dessous, identifiez les expressions qui permettent d’acceder en écriture comme en lecture aux propriétés du bean UserBean.

PNG - 100.2 ko
img20

- Expliquez

L’exécution du projet sur le serveur Tomcat donne le rendu suivant.

PNG - 12.7 ko
tutoriel-jsf-managed-bean-7

- Expliquez.

JSF EL(expression language) nous permet d’accéder en lecture comme en écriture aux propriétés du bean depuis la vue, en appelant le getter ou setter de chaque propriété.

Partie 4 : Propriétés par défaut avec @ManagedProperty

EXERCICES :
- Initialiser les propriétés du Managed bean UserBean.java telle que :
- nom="DUPONT" ;
- prenom="MICHEL"
- genre="homme"

SOLUTION : JSF 2 fournit l’annotation @ManagedProperty pour initialiser les propriétés nom, prenom, genre et email de UserBean :

PNG - 15.9 ko
tutoriel-jsf-managed-bean-8

- L’éxécution du projet donne le rendu ci-dessous :

PNG - 13.7 ko
tutoriel-jsf-managed-bean-9

- Téléchargez le Zip du projet

Zip - 2.3 Mo
Zip projet Tutoriel 6

Partie 5 : intégration avec facelet

Proposez le code d’un écran facelet permettant d’obtenir le résultat suivant

PROJET ECLIPSE

Zip - 2.7 Mo
Jsf2ObjisFormation-TP6-FINAL

Partie 6 : écouteur phases JSF

- Rappelez les 6 phases du cycle de vie d’une requête JSF

Code

- Ajoutez le code suivant dans le projet

PNG - 18.5 ko
phaselistener-jsf-3

- Expliquez

Configuration

- Ajoutez la configuration suivante dans faces-config.xml

PNG - 11.8 ko
phaselistener-jsf-2

- Expliquez

Logs PHASES

Expliquez le résultat :

PNG - 11.6 ko
phaselistener-jsf-5

Conclusion

- Dans ce tutoriel, vous avez compris et mis en œuvre les annotations JSF 2 pour déclarer un bean managé, pour initialiser les propriétés du Bean, définir la portée du bean managé, et enfin, fait communiquer votre IHM avec votre bean managé en utilisant JSF EL.

Pour aller plus loin : Formation JSF Objis

Pour aller plus loin sur les mécanismes de navigation fournies par la version 2 de JSF voir le Tuto 7.

Formation JSF

Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur JSF : Formation JSF

PNG - 82.7 ko
programme détaillé JSF 2