SlideShare une entreprise Scribd logo
1  sur  44
JSF (JAVA SERVER
FACES)
Notion de framework
 Les frameworks sont des structures logicielles qui
définissent des cadres dans lesquels s’insèrent les objets et
concepts spécifiques à une application.
 En pratique, un framework est un ensemble de classes et
de mécanismes associés à une architecture logicielle qui
fournissent un ou plusieurs services techniques ou métiers
aux applications qui s’appuient dessus
 Exemple : Framework MVC (Java)
 Struts
 Spring MVC
 Tapestry
 JSF (standard JEE)
Qu’est-ce que JSF ?
 JSF : Java Server Faces
 Framework de présentation pour les applications
Web en Java :
 librairie de composants graphiques
 fonctionnalités se basant sur ces composants
 Implémentations
 Sun – Mojarra
 https://javaserverfaces.java.net/
 Apache – MyFaces
 http://myfaces.apache.org/
 Oracle – ADF Faces
 http://www.oracle.com/technology/products/adf/adffaces/index.html
Java Server Faces
 Concept novateur :
 Suit un modèle orienté évènement
 Suit une architecture orientée composant
 Mais aussi :
 respecte le concept MVC
 permet de générer un format autre que du HTML (XML,
WML, ….),
 propose des librairies de composants graphiques,
 permet de créer ses propres composants,
 Ajax ready
Nouvelle vision
 Représentation de la page sous forme d’arbre des
composants, et accessible via le contexte de
l’application
MaPage
Mot de passe :
Identifiant :
Soumettre
ViewRoot
Form
InputText
InputText
CommandButton
OutputText
OutputText
Composants de l’architecture JSF
 Contrôleur (Faces Servlet) :
 Servlet principale de l'application qui sert de contrôleur.
 Toutes les requêtes de l'utilisateur passent systématiquement par
elle, qui les examine et appelle les différentes actions
correspondantes.
 Fait partie du framework
 Vue: pages web (JSP, XHTML) :
 JSF utilise les Facelets, dans sa version la plus récente (JSF 2.0)
 Facelets est formée d'une arborescence de composants UI
 Modèle Managed Bean/Backing Bean
 Classes Java spécialisées qui synchronisent les valeurs avec les
composants UI,
 Accèdent à la logique métier et gèrent la navigation entre les
pages.
 Faces-config.xml
 Fichier de configuration de l’application définissant les règles de
navigation et les différents managed beans utilisés
Composants de l’architecture
JSF
 Moteur de rendu (Renderrer): décode la requête de
l'utilisateur pour initialiser les valeurs du composant et
encode la réponse pour créer une représentation du
composant pour le client
 Convertisseurs et validateurs: permettent de valider les
champs de saisie textuelle et de les convertir vers d’autres
types d’objets
Interface Homme Machine (IHM)
 Plusieurs technologies possibles pour l’écriture des
pages :
 JSP
 XHTML (Facelets)
 Ensemble de balises JSF constituant la page :
 Composants graphiques
 Composants de conversion
 Composants de validation
 Création de pages avec Facelets
 Inclus dans JSF
 Modélisation avec des templates
Modèle (template)
IHM : Template de page - Facelets
 Facelets est un framework de composition de pages ou
de composants.
En-tête
Corps
Pied de page
En-tête
Pied de page
Corps
IHM : Template de page (suite…)
Inclusion de page
Inclusion de page
Insertion de page
Composants JSF
IHM : Exemple de page
Déclaration des librairies
Template de page
(Facelets)
Ressources
Lien JavaBean
IHM : Composants graphiques
IHM : Composants additionnels
 Il existe des librairies supplémentaires proposant des
composants supplémentaires.
 Compléments des composants de base,
 Menu
 Onglet
 Treeview
 Calendrier
 …
ManagedBean
 C’est un JavaBean géré par JSF
 Permet de faire le lien entre l’IHM et le code
métier de l’application.
 Doit contenir des accesseurs (getters) et des
mutateurs (setters) pour champs de l’IHM.
 Définition au sein du fichier faces-config.xml
ou par les annotations.
ManagedBean : exemple
Annotations de
paramétrage
Attribut relatif
au champ
de saisie de l’IHM
Accesseur du
champ de saisie
Mutateur du
champ de saisie
La configuration : faces-config.xml
Fichier de ressources
par défaut
Navigation
I18N
La configuration : web.xml
Nom de l’application
Mapping de la servlet
Page d’accueil
Servlet utilisée
Extension des pages
Respect du concept M.V.C.
Réponse retournée
au client
Requête issue
du client
Controler
FacesServlet
View
Model
faces-config.xml
Convertisseurs
 Permet la conversion des données :
 IHM vers ManagedBean
 ManagedBean vers IHM.
 Exemples :
 Conversion de date
 Conversion de nombre
 Il est facile de créer son propre convertisseur.
PersonneBean
Les convertisseurs
MaPage
Prénom :
Nom :
Enregistrer
Date de naissance :
Les validateurs
 Vérifier la validité des données converties
 Applicable sur l’ensemble des composants de
saisies
 Exemples de validateurs :
 valider la présence de saisie,
 valider que la saisie est conforme à une plage de
valeurs,
 valider le format de saisie (Expression Régulière)
 valider la longueur de la saisie,
 …
Les validateurs
MaPage
Mot de passe :
Identifiant :
Soumettre
MaPage
Mot de passe :
Identifiant :
Soumettre
Erreur
Le rendu
 Les composants JSF peuvent être transcrits en
HTML, XML, WML… en fonction de la cible
 Ceci est possible par le biais de Renderer
 Les Renderers sont des classes Java :
 récupérant les attributs des composants,
 transcrivant le composant en fonction du format
souhaité.
Le rendu
HTMLInputTextRenderer.java
maPage.xhtml
maPage.html
Le cycle de vie
Apply
Requests
Restore
View
Process
Validations
Update
Model
Values
Invoke
Application
Render
Response
Reconstruction
de l’arborescence
des composants
Génération
de la réponse
Validation
et conversion
des données
Extraction
des valeurs
de la requête
Appel des méthodes
pour le traitement
de la page
Mise à jour du modèle
après validation
et/ou conversion
Erreur de
conversion
Erreur de
conversion et/ou
de validation
Réponse retournée
au client
Requête issue
du client
 Décrit les différentes étapes entre la requête du client et la réponse
retournée
Etapes de développement avec
JSF
1. Configurer le fichier web.xml afin de déclarer le Faces Servlet
2. Développer les objets du modèle (Managed Bean ou les
Backing Bean)
3. Déclarer les Managed Bean dans le fichier de configuration de
l'application faces-config.xml
4. Créer des pages en utilisant les composants UI d'interface
utilisateur et les tagLib de JSF
5. Définir les règles de navigation entre les pages dans faces-
config.xml
web.xml
 Fichier de déploiement de l’application
 Déclare la servlet principale :
javax.faces.webapp.FacesServlet
 point d’entrée d’une application JSF
 Préfixe /faces/ (http://localhost/myAppli/faces/index.jsp)
 Suffixes *.jsf ou *.faces (http://localhost/myAppl/index.jsf)
 Spécifier le nom et le chemin du fichier de configuration
 Nom du paramètre :
javax.faces.application.CONFIG_FILES
 Exemple : /WEB-INF/faces-config.xml
 Spécifie où l’état de l’application doit être sauvegardé
 Nom du paramètre :
javax.faces.STATE_SAVING_METHOD
faces-config.xml
 Décrit essentiellement 6 éléments principaux
 Les beans mangés <managed-bean>
 Cette balise peut être remplacée par les annotations
 les règles de navigation <navigation-rule>
 les ressources éventuelles suite à des messages
<message-bundle>
 la configuration de la localisation <resource-bundle>
 la configuration des validateurs et des convertisseurs
<validator> et <converter>
 d’autres éléments liés à des nouveaux composants JSF
<render-kit>
Balises JSF personnalisées
 Les composants JSF sont utilisés
 dans les pages JSP au moyen de balises personnalisées
dédiées aux JSF
 CORE <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
 HTML <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
 dans les facelets au moyen xmlns :
 CORE <xmlns:f="http://java.sun.com/jsf/core">
 HTML <xmlns:h="http://java.sun.com/jsf/html">
 Penser à utiliser les bibliothèques offrant des composants
graphiques évolués
 Primefaces
 RichFaces
 Icefaces
Managed Bean
 Déclaré par les annotations ou dans le fichier faces-
config.xml
 Trois éléments sont à préciser
 <managed-bean-name> définit un nom qui servira
d’étiquette quand le Bean sera exploité dans les pages
JSP
 <managed-bean-class> déclare le nom de la classe de
type package.class
 <managed-bean-scope> précise le type de scope utilisé
pour le Bean (none, application, session, request, view)
@ManagedBean (name= "MyBean")
@SessionScoped
public calss MyFirstBean
{
}
@ Annotationsfaces-config.xml
Managed Bean - Scope
 View : persiste durant l’interaction utilisateur avec une seule
page (view) d’une application web.
 Request : persiste durant une seule requête HTTP dans une
application web.
 Session : persiste pour plusieurs requêtes HTTP d’une
même session dans une application web .
 Application : persiste via toutes les interactions utilisateurs
avec l’application web.
 None : indique qu’il n y a pas de scope défini
 Utilisé lorsque un managed bean référence un autre managed
bean. Le deuxième ne doit pas avoir un scope, s’il doit être créé
uniquement au moment de l’appel.
Accès aux Managed Bean
 Les Expressions Languages (EL) sont utilisées pour
accéder aux éléments du Bean dans les vues
 Une EL permet d’accéder simplement aux Beans des différents
scopes de l’application (page, request, session et application)
 Forme d’une EL dans JSF #{expression}
 #{MyBean.attribut} indique à JSF
 de déterminer le nom du ManagedBean dans le fichier
faces-config.xml ou dans les annotations
 de chercher un objet qui porte le nom de MyBean dans
son contexte puis invoque
 la méthode getValue() (pour récupérer la valeur de l’attribut)
 ou setValue() pour mettre à jour la valeur de l’attribut
Accès aux Managed Bean
 Déclaration d’un ManagedBean
@ManagedBean(name = "NumberBean")
@SessionScoped
public class NumberBean {…}
 <h:inputText id="in" value="#{NumberBean.number}"/>
 La valeur saisie dans la vue est stockée dans l’attribut number du
managed bean UserBean. (NumberBean.setNumber())
 <h:outputText id="out" value="#{NumberBean.response}"/>
 affiche dans la vue la valeur de l’attribut response de NumberBean
(MyBean.getName())
Navigation
 faces-config.xml indique au contrôleur le schéma de navigation
 <navigation-rule> pour paramétrer les règles de navigation
 <from-view-id> indique la vue source où est effectuée la
demande de redirection.
 <navigation-case> précise une page vue destination pour
chaque valeur de clé
 <from-outcome> : la valeur de la clé de navigation
 <to-view-id> : la vue demandée
 Deux types de navigation
 Navigation statique: La valeur de la clé outcome est connue au moment
de l’écriture de la vue
 Pas besoin du fichier de configuration « faces-config » pour déclarer la navigation
!
 Navigation dynamique: La valeur de la clé outcome est inconnue au
moment de l’écriture des vues.
 Utiliser « faces-config » pour la navigation
 Les valeurs outcomes peuvent être calculées par des ManagedBeans
Navigation - outcome
 Clé outcome définie dans la page JSF :
 En cliquant sur le bouton, on serait redirigé vers la page
avec la clé outcome (valeur de action dans la balise
h:commandButton)
 Remarque : à Partir de JSF 2.0, on cherche s’il y a une vue
avec le nom « page2 » sans avoir recours au fichier de
navigation
Navigation - outcome
 Clé outcome définie dans ManagedBean
PageController.java
page1.xhtml
Events & Listeners
 JSF utilise le modèle évènement/écouteur (event/listner) du
JavaBeans (utilisé by Swing).
 Les composants UI génèrent des évènements et les
écouteurs sont enregistrés pour ces évènements.
 Dans une application JSF, l’intégration de la logique
applicative consiste à assigner l’écouteur approprié au
composant qui génère des évènements
 Il y a 3 évènements standards
 Value-change events
 Action events
 Data model events
 déclenchés lorsque un composant data traite une ligne (dataTable).
Value-Change Events
 Les évènements value-change sont générés lorsque
l’utilisateur saisie une nouvelle donnée dans un
composant inputText
<h:inputText
valueChangeListener="#{myForm.processValueChanged}"/>
 Lorsque l’utilisateur modifie le contenu du champs de
saisie et soumet le formulaire, JSF génère un évènement
value-change
public void processValueChanged(ValueChangeEvent event){
HtmlInputText sender = (HtmlInputText)event.getComponent();
sender.setReadonly(true);
}
Action events
 Générés lorsque l’utilisateur activent des
composants commandes, appelés aussi sources
d’actions, intégrant des contrôles de boutons ou
hyperlinks
 Action events sont traités par les action listeners
 Action Listeners
 affectent la navigation
 Typiquement, ils réalisent des traitements et retourne une clé
outcome, utilisée par le système de navigation de JSF pour
sélectionner la page suivante
 N’affecte pas la navigation
 Manipulent des composants dans la même vue, sans modifier la vue
Action methods
 <h:commandButton type="submit"
value="Login“ action="#{loginForm.login}"/>
 Lorsque on clique sur le bouton, l’evenement action est déclenché et
la méthode login du ManagedBean loginForm est exécutée.
public class LoginForm {
...
public String login(){
if (...) {// login is successful
return "success";
}
else{ return "failure"; }
}
...
}
Action Listener Methods
 Pour exécuter un code métier qui n’est pas associé à la
navigation.
 On associe une méthode actionListener avec le composant
<h:commandButton id="redisplayCommand" type="submit"
value="Redisplay“ actionListener="#{myForm.doIt}"/>
 Contrairement aux méthodes d’action, les action listeners
ont accès au composant qui a déclenché l’évènement.
public void doIt(ActionEvent event){
HtmlCommandButton button =
(HtmlCommandButton)event.getComponent();
button.setValue("It's done!");
}
JSF Et AJAX ?
 Les implémentations JSF2 supportent nativement
AJAX.
 <f:ajax>
 Les librairies supplémentaires proposent des
compléments :
 Primefaces
 MyFaces
 ICEfaces
 JBoss Richfaces

Contenu connexe

Tendances

Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Eric Bourdet
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Heithem Abbes
 

Tendances (20)

Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
 

En vedette (20)

Jsf presentation
Jsf presentationJsf presentation
Jsf presentation
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - Basics
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartis
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI
 
Sockets
SocketsSockets
Sockets
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Java RMI
Java RMIJava RMI
Java RMI
 
Hibernate et jsf
Hibernate et jsfHibernate et jsf
Hibernate et jsf
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
Persistance avec JPA
Persistance avec JPAPersistance avec JPA
Persistance avec JPA
 
3 Jsf
3 Jsf3 Jsf
3 Jsf
 
JDBC - JPA - Spring Data
JDBC - JPA - Spring DataJDBC - JPA - Spring Data
JDBC - JPA - Spring Data
 
J2 ee
J2 eeJ2 ee
J2 ee
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
2 ModéLe Mvc
 
J2ee architecture
J2ee architectureJ2ee architecture
J2ee architecture
 

Similaire à Java Server Faces (JSF)

JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfMahmoudiOussama
 
Présentation de JavaServer Faces
Présentation de JavaServer FacesPrésentation de JavaServer Faces
Présentation de JavaServer FacesJS Bournival
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Mejdeddine Bouzouita
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .NetGregory Renard
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfRachida19
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfngombeemmanuel
 
Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Claude Coulombe
 
introductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfintroductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfHamdaneAbdelAzizHagg
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EESabri Bouchlema
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5Mohamed Nemili
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Microsoft
 
Building Entreprise App With Spring Portfolio
Building Entreprise App With Spring PortfolioBuilding Entreprise App With Spring Portfolio
Building Entreprise App With Spring Portfoliomaknihamdi
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 

Similaire à Java Server Faces (JSF) (20)

JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdf
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Présentation de JavaServer Faces
Présentation de JavaServer FacesPrésentation de JavaServer Faces
Présentation de JavaServer Faces
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .Net
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdf
 
Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09
 
introductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfintroductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdf
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Java pour le Web
Java pour le WebJava pour le Web
Java pour le Web
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5
 
Building Entreprise App With Spring Portfolio
Building Entreprise App With Spring PortfolioBuilding Entreprise App With Spring Portfolio
Building Entreprise App With Spring Portfolio
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 

Dernier

Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 37
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 37
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 

Dernier (18)

Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 

Java Server Faces (JSF)

  • 2. Notion de framework  Les frameworks sont des structures logicielles qui définissent des cadres dans lesquels s’insèrent les objets et concepts spécifiques à une application.  En pratique, un framework est un ensemble de classes et de mécanismes associés à une architecture logicielle qui fournissent un ou plusieurs services techniques ou métiers aux applications qui s’appuient dessus  Exemple : Framework MVC (Java)  Struts  Spring MVC  Tapestry  JSF (standard JEE)
  • 3. Qu’est-ce que JSF ?  JSF : Java Server Faces  Framework de présentation pour les applications Web en Java :  librairie de composants graphiques  fonctionnalités se basant sur ces composants  Implémentations  Sun – Mojarra  https://javaserverfaces.java.net/  Apache – MyFaces  http://myfaces.apache.org/  Oracle – ADF Faces  http://www.oracle.com/technology/products/adf/adffaces/index.html
  • 4. Java Server Faces  Concept novateur :  Suit un modèle orienté évènement  Suit une architecture orientée composant  Mais aussi :  respecte le concept MVC  permet de générer un format autre que du HTML (XML, WML, ….),  propose des librairies de composants graphiques,  permet de créer ses propres composants,  Ajax ready
  • 5. Nouvelle vision  Représentation de la page sous forme d’arbre des composants, et accessible via le contexte de l’application MaPage Mot de passe : Identifiant : Soumettre ViewRoot Form InputText InputText CommandButton OutputText OutputText
  • 6. Composants de l’architecture JSF  Contrôleur (Faces Servlet) :  Servlet principale de l'application qui sert de contrôleur.  Toutes les requêtes de l'utilisateur passent systématiquement par elle, qui les examine et appelle les différentes actions correspondantes.  Fait partie du framework  Vue: pages web (JSP, XHTML) :  JSF utilise les Facelets, dans sa version la plus récente (JSF 2.0)  Facelets est formée d'une arborescence de composants UI  Modèle Managed Bean/Backing Bean  Classes Java spécialisées qui synchronisent les valeurs avec les composants UI,  Accèdent à la logique métier et gèrent la navigation entre les pages.  Faces-config.xml  Fichier de configuration de l’application définissant les règles de navigation et les différents managed beans utilisés
  • 7. Composants de l’architecture JSF  Moteur de rendu (Renderrer): décode la requête de l'utilisateur pour initialiser les valeurs du composant et encode la réponse pour créer une représentation du composant pour le client  Convertisseurs et validateurs: permettent de valider les champs de saisie textuelle et de les convertir vers d’autres types d’objets
  • 8. Interface Homme Machine (IHM)  Plusieurs technologies possibles pour l’écriture des pages :  JSP  XHTML (Facelets)  Ensemble de balises JSF constituant la page :  Composants graphiques  Composants de conversion  Composants de validation  Création de pages avec Facelets  Inclus dans JSF  Modélisation avec des templates
  • 9. Modèle (template) IHM : Template de page - Facelets  Facelets est un framework de composition de pages ou de composants. En-tête Corps Pied de page En-tête Pied de page Corps
  • 10. IHM : Template de page (suite…) Inclusion de page Inclusion de page Insertion de page
  • 11. Composants JSF IHM : Exemple de page Déclaration des librairies Template de page (Facelets) Ressources Lien JavaBean
  • 12. IHM : Composants graphiques
  • 13. IHM : Composants additionnels  Il existe des librairies supplémentaires proposant des composants supplémentaires.  Compléments des composants de base,  Menu  Onglet  Treeview  Calendrier  …
  • 14. ManagedBean  C’est un JavaBean géré par JSF  Permet de faire le lien entre l’IHM et le code métier de l’application.  Doit contenir des accesseurs (getters) et des mutateurs (setters) pour champs de l’IHM.  Définition au sein du fichier faces-config.xml ou par les annotations.
  • 15.
  • 16. ManagedBean : exemple Annotations de paramétrage Attribut relatif au champ de saisie de l’IHM Accesseur du champ de saisie Mutateur du champ de saisie
  • 17. La configuration : faces-config.xml Fichier de ressources par défaut Navigation I18N
  • 18. La configuration : web.xml Nom de l’application Mapping de la servlet Page d’accueil Servlet utilisée Extension des pages
  • 19. Respect du concept M.V.C. Réponse retournée au client Requête issue du client Controler FacesServlet View Model faces-config.xml
  • 20. Convertisseurs  Permet la conversion des données :  IHM vers ManagedBean  ManagedBean vers IHM.  Exemples :  Conversion de date  Conversion de nombre  Il est facile de créer son propre convertisseur.
  • 21. PersonneBean Les convertisseurs MaPage Prénom : Nom : Enregistrer Date de naissance :
  • 22. Les validateurs  Vérifier la validité des données converties  Applicable sur l’ensemble des composants de saisies  Exemples de validateurs :  valider la présence de saisie,  valider que la saisie est conforme à une plage de valeurs,  valider le format de saisie (Expression Régulière)  valider la longueur de la saisie,  …
  • 23. Les validateurs MaPage Mot de passe : Identifiant : Soumettre MaPage Mot de passe : Identifiant : Soumettre Erreur
  • 24. Le rendu  Les composants JSF peuvent être transcrits en HTML, XML, WML… en fonction de la cible  Ceci est possible par le biais de Renderer  Les Renderers sont des classes Java :  récupérant les attributs des composants,  transcrivant le composant en fonction du format souhaité.
  • 26. Le cycle de vie Apply Requests Restore View Process Validations Update Model Values Invoke Application Render Response Reconstruction de l’arborescence des composants Génération de la réponse Validation et conversion des données Extraction des valeurs de la requête Appel des méthodes pour le traitement de la page Mise à jour du modèle après validation et/ou conversion Erreur de conversion Erreur de conversion et/ou de validation Réponse retournée au client Requête issue du client  Décrit les différentes étapes entre la requête du client et la réponse retournée
  • 27. Etapes de développement avec JSF 1. Configurer le fichier web.xml afin de déclarer le Faces Servlet 2. Développer les objets du modèle (Managed Bean ou les Backing Bean) 3. Déclarer les Managed Bean dans le fichier de configuration de l'application faces-config.xml 4. Créer des pages en utilisant les composants UI d'interface utilisateur et les tagLib de JSF 5. Définir les règles de navigation entre les pages dans faces- config.xml
  • 28. web.xml  Fichier de déploiement de l’application  Déclare la servlet principale : javax.faces.webapp.FacesServlet  point d’entrée d’une application JSF  Préfixe /faces/ (http://localhost/myAppli/faces/index.jsp)  Suffixes *.jsf ou *.faces (http://localhost/myAppl/index.jsf)  Spécifier le nom et le chemin du fichier de configuration  Nom du paramètre : javax.faces.application.CONFIG_FILES  Exemple : /WEB-INF/faces-config.xml  Spécifie où l’état de l’application doit être sauvegardé  Nom du paramètre : javax.faces.STATE_SAVING_METHOD
  • 29. faces-config.xml  Décrit essentiellement 6 éléments principaux  Les beans mangés <managed-bean>  Cette balise peut être remplacée par les annotations  les règles de navigation <navigation-rule>  les ressources éventuelles suite à des messages <message-bundle>  la configuration de la localisation <resource-bundle>  la configuration des validateurs et des convertisseurs <validator> et <converter>  d’autres éléments liés à des nouveaux composants JSF <render-kit>
  • 30. Balises JSF personnalisées  Les composants JSF sont utilisés  dans les pages JSP au moyen de balises personnalisées dédiées aux JSF  CORE <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>  HTML <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>  dans les facelets au moyen xmlns :  CORE <xmlns:f="http://java.sun.com/jsf/core">  HTML <xmlns:h="http://java.sun.com/jsf/html">  Penser à utiliser les bibliothèques offrant des composants graphiques évolués  Primefaces  RichFaces  Icefaces
  • 31.
  • 32. Managed Bean  Déclaré par les annotations ou dans le fichier faces- config.xml  Trois éléments sont à préciser  <managed-bean-name> définit un nom qui servira d’étiquette quand le Bean sera exploité dans les pages JSP  <managed-bean-class> déclare le nom de la classe de type package.class  <managed-bean-scope> précise le type de scope utilisé pour le Bean (none, application, session, request, view) @ManagedBean (name= "MyBean") @SessionScoped public calss MyFirstBean { } @ Annotationsfaces-config.xml
  • 33. Managed Bean - Scope  View : persiste durant l’interaction utilisateur avec une seule page (view) d’une application web.  Request : persiste durant une seule requête HTTP dans une application web.  Session : persiste pour plusieurs requêtes HTTP d’une même session dans une application web .  Application : persiste via toutes les interactions utilisateurs avec l’application web.  None : indique qu’il n y a pas de scope défini  Utilisé lorsque un managed bean référence un autre managed bean. Le deuxième ne doit pas avoir un scope, s’il doit être créé uniquement au moment de l’appel.
  • 34. Accès aux Managed Bean  Les Expressions Languages (EL) sont utilisées pour accéder aux éléments du Bean dans les vues  Une EL permet d’accéder simplement aux Beans des différents scopes de l’application (page, request, session et application)  Forme d’une EL dans JSF #{expression}  #{MyBean.attribut} indique à JSF  de déterminer le nom du ManagedBean dans le fichier faces-config.xml ou dans les annotations  de chercher un objet qui porte le nom de MyBean dans son contexte puis invoque  la méthode getValue() (pour récupérer la valeur de l’attribut)  ou setValue() pour mettre à jour la valeur de l’attribut
  • 35. Accès aux Managed Bean  Déclaration d’un ManagedBean @ManagedBean(name = "NumberBean") @SessionScoped public class NumberBean {…}  <h:inputText id="in" value="#{NumberBean.number}"/>  La valeur saisie dans la vue est stockée dans l’attribut number du managed bean UserBean. (NumberBean.setNumber())  <h:outputText id="out" value="#{NumberBean.response}"/>  affiche dans la vue la valeur de l’attribut response de NumberBean (MyBean.getName())
  • 36. Navigation  faces-config.xml indique au contrôleur le schéma de navigation  <navigation-rule> pour paramétrer les règles de navigation  <from-view-id> indique la vue source où est effectuée la demande de redirection.  <navigation-case> précise une page vue destination pour chaque valeur de clé  <from-outcome> : la valeur de la clé de navigation  <to-view-id> : la vue demandée  Deux types de navigation  Navigation statique: La valeur de la clé outcome est connue au moment de l’écriture de la vue  Pas besoin du fichier de configuration « faces-config » pour déclarer la navigation !  Navigation dynamique: La valeur de la clé outcome est inconnue au moment de l’écriture des vues.  Utiliser « faces-config » pour la navigation  Les valeurs outcomes peuvent être calculées par des ManagedBeans
  • 37. Navigation - outcome  Clé outcome définie dans la page JSF :  En cliquant sur le bouton, on serait redirigé vers la page avec la clé outcome (valeur de action dans la balise h:commandButton)  Remarque : à Partir de JSF 2.0, on cherche s’il y a une vue avec le nom « page2 » sans avoir recours au fichier de navigation
  • 38. Navigation - outcome  Clé outcome définie dans ManagedBean PageController.java page1.xhtml
  • 39. Events & Listeners  JSF utilise le modèle évènement/écouteur (event/listner) du JavaBeans (utilisé by Swing).  Les composants UI génèrent des évènements et les écouteurs sont enregistrés pour ces évènements.  Dans une application JSF, l’intégration de la logique applicative consiste à assigner l’écouteur approprié au composant qui génère des évènements  Il y a 3 évènements standards  Value-change events  Action events  Data model events  déclenchés lorsque un composant data traite une ligne (dataTable).
  • 40. Value-Change Events  Les évènements value-change sont générés lorsque l’utilisateur saisie une nouvelle donnée dans un composant inputText <h:inputText valueChangeListener="#{myForm.processValueChanged}"/>  Lorsque l’utilisateur modifie le contenu du champs de saisie et soumet le formulaire, JSF génère un évènement value-change public void processValueChanged(ValueChangeEvent event){ HtmlInputText sender = (HtmlInputText)event.getComponent(); sender.setReadonly(true); }
  • 41. Action events  Générés lorsque l’utilisateur activent des composants commandes, appelés aussi sources d’actions, intégrant des contrôles de boutons ou hyperlinks  Action events sont traités par les action listeners  Action Listeners  affectent la navigation  Typiquement, ils réalisent des traitements et retourne une clé outcome, utilisée par le système de navigation de JSF pour sélectionner la page suivante  N’affecte pas la navigation  Manipulent des composants dans la même vue, sans modifier la vue
  • 42. Action methods  <h:commandButton type="submit" value="Login“ action="#{loginForm.login}"/>  Lorsque on clique sur le bouton, l’evenement action est déclenché et la méthode login du ManagedBean loginForm est exécutée. public class LoginForm { ... public String login(){ if (...) {// login is successful return "success"; } else{ return "failure"; } } ... }
  • 43. Action Listener Methods  Pour exécuter un code métier qui n’est pas associé à la navigation.  On associe une méthode actionListener avec le composant <h:commandButton id="redisplayCommand" type="submit" value="Redisplay“ actionListener="#{myForm.doIt}"/>  Contrairement aux méthodes d’action, les action listeners ont accès au composant qui a déclenché l’évènement. public void doIt(ActionEvent event){ HtmlCommandButton button = (HtmlCommandButton)event.getComponent(); button.setValue("It's done!"); }
  • 44. JSF Et AJAX ?  Les implémentations JSF2 supportent nativement AJAX.  <f:ajax>  Les librairies supplémentaires proposent des compléments :  Primefaces  MyFaces  ICEfaces  JBoss Richfaces