SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services WebLilia 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
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sassmarwa baich
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 

Mais procurados (20)

Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
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)
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
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
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
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
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Soa & services web
Soa & services webSoa & services web
Soa & services web
 
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
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
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
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 

Destaque (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 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
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
 
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
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
 
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
 

Semelhante a 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
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
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
 
[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
 

Semelhante a 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
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
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
 
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
 

Último

Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 

Último (20)

Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 

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