SlideShare une entreprise Scribd logo
JavaServer Faces  JS Bournival 18 juillet 2007
Agenda Introduction Historique Architecture Concepts clés Cycle de vie d’une requête Expression language Traction dans l’industrie Références Questions
JavaServer Faces? JSF est la spécification d’un cadre d’application pour la couche de présentation d’une application web.  JSF fait partie, aussi de la spécification globale de JEE 5. JSR 127 : spécification initiale résultant en l’implémentation de JavaServer Faces 1.1 JSR 252 : spécification de JSF 1.2, corrigeant plusieurs problèmes, et ajoutant certaines nouvelles fonctionnalités JSR 314 : spécification de JSF 2.0 … à suivre.
Buts recherchés et Historique RAD Rapid Application Development RIA Rich Internet Application Permettre, pour les développeurs, de facilement lier, dans un contexte  stateful , des composants  backend , avec des évènements émanant de l’interface-utilisateur.
Buts recherchés et Historique …  it is also aimed directly at solving many of the common problems encountered when  writing applications for HTML clients  that communicate via HTTP  […]  These applications are typically form-based, and are comprised of one or more HTML pages with which the user interacts to complete a task or set of tasks. Craig McClanahan, Ed Burns, & Roger Kitain Java Specification Request (JSR) 127 " "
Architecture vue d’en haut
Niveaux d'abstractions
Les concepts clé Les 8 éléments à maîtriser dans JSF UICOMPONENT RENDERER VALIDATOR BACKING BEANS CONVERTER EVENTS & LISTENERS MESSAGES NAVIGATION
Les concepts clé (1/8) UICOMPONENT Abstraction et encapsulation de fonctionnalités pour un composant possédant un état, et une représentation graphique
Les concepts clé (2/8) RENDERER renderer par défaut: HTML 4.01 direct implementation model VS. delegated implementation model Organisé render kits
Les concepts clé (5/8) CONVERTER prend en charge encoding-decoding converters  de base fournis par JSF <f:convertNumber /> <f:convertDateTime /> <h:inputText value=&quot;#{user.balance}&quot;> <f:convertNumber type=&quot;currency&quot; currencyCode=&quot;KZT&quot;/> </h:inputText> <h:inputText value=&quot;#{user.dateOfBirth}&quot;> <f:convertDateTime pattern=&quot;MM/dd/yyyy (hh:mm a)&quot;/> </h:inputText> Petits exemples boboches mais qui disent tout:
Les concepts clé (3/8) VALIDATOR directement dans l'implémentation du composant via une méthode d'une  backing bean via une classe validateur générique <h:inputText value=&quot;#{user.name}&quot;> <f:validateLength  minimum=“13&quot;/> </h:inputText> <h:inputText value=&quot;#{user.creditCard}&quot;> <f:validator validatorId=“com.nurun.CreditCardValidator&quot;/> </h:inputText>
Les concepts clé (4/8) BACKING BEANS Lier la valeur d'un composant à un attribut d'une  backing bean Attacher un composant à un attribut d'une  backing bean Déclaration dans le fichier de configuration de JSF Lien avec composantes d'affaires ( EJB3 ,  Spring ) Niveau de portée Application, Session ou Requête <h:commandButton action= “#{myBean.faitKekchose}“ …  />
Les concepts clé (6/8) EVENTS & LISTENERS Types value change events action events data model events phase events Les  listeners  sont appelés lors de la soumission Peut se présenter sous la forme d’une classe, ou simplement d’une méthode d’une  backing bean <h:inputText value=&quot;#{myBean.name}&quot;  valueChangeListener=&quot;#{myBean.react}&quot;  /> Petit exemple:
Les concepts clé (7/8) MESSAGES Erreurs d'application, ou de validation Composants pouvant ajouter des messages Rien de très magique ici, se compare aisément aux tags du style  <html:errors/>  de  Struts FacesContext context = FacesContet.getCurrentInstance(); context.addMessage(null,  new FacesMessage( &quot; blah.&quot;) ; <h:messages style= “color: blue“ /> Dans la vue: Dans la  backing bean :
Les concepts clé (8/8) NAVIGATION Déclaration des règles de navigation dans le fichier de configuration de JSF,  faces-config.xml Basé sur des  outcome  sous la forme de chaîne de caractères Rien de nouveau ici pour les habitués de  Struts <navigation-rule> <from-view-id> /welcome.jsp </from-view-id> <navigation-case> <from-outcome> success </from-outcome> <to-view-id> /response.jsp </to-view-id> </navigation-case> </navigation-rule> Exemple dans faces-config.xml:
Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
Le cycle de vie d'une requête (1/6) Restore View Construction ou mise à jour de l'arbre logique de composants <input type=&quot;hidden&quot; name=&quot;com.sun.faces.VIEW&quot; value=&quot; H4sIAAAAAAAAAMVaa2wcVxW+u347bmsnKXk1zTYPN2ncfT/zaOvYeayyboLXSYkjcMYzd+2NZ2emM7P2uFGiFNGCqIRAJRVIASrBj/4of0AI1B+8UWlQi4jgByCkCBVFlSgI/pSHoJx757m7d8axHZxVMp5799x7zz3fOd8599qvv486NBVFeLkW1epStMLxWIvW9aoYnVAxLutqndfrKt5Y2Tb60LULkTBqL6FufrYqCiqWdPRg6SI3z8XIgNiwqnKLpaqmHyyhHl7kNO1proZ1tN6UETlpJgYTVqUZEOgkK+majjZ4ZjjBabNjnAJfh6vCs+gKChsKaLeBSJhKOWsYz9/c/uU3ua+0oVARtWvV57ChIITaFtrh2auRwUjR0T4y1LC2BZtUZAnUjs7qNTF6Ah6n6rpS1yewoYNw+1RVyDhD98jqTJS7yBnpi1qFvrjDhqFV1jm9rlnDsuYw+uwADdob9CDPbkuyECipo/QSGpexiHn9iCyLmJNGZjE/Ny0bYKQB10iWGT/htq+T3Z+btq7RzHpiKq7McZDjFgE2XE2vUynKJ7 … == &quot; />
Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
Le cycle de vie d'une requête (2/6) Apply Request Values Insertion des valeurs dans chacun des composants de l'arbre POST /path/view.faces HTTP/1.0 From: someone@somewhere.com User-Agent: HTTPTool/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 32 Myform:mycomponent=bonhomme+carnaval&  … HTTP POST request
Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
Le cycle de vie d'une requête (3/6) Process Validations JSF demande à chacun des composants de se convertir et de se valider (validateur externes etc.) X
Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
Le cycle de vie d'une requête (4/6) Update Model Values Insertion des valeurs dans le modèle ( backing bean  et autres objets du modèle)
Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
Le cycle de vie d'une requête (5/6) Invoke Application Exécute la méthode  action  (ou autre  listener  enregistré) appelé par l'évènement par défaut déclenché par les composants de type « command » (lien ou bouton)
Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
Le cycle de vie d'une requête (6/6) Render Response Affiche la réponse en mettant à contribution le mécanisme de vue utilisé (JSP, Facelets)
JSF EL EL ==  Expression Language Sont sous la forme  #{…} Permet de  dynamiquement manipuler les attributs des  backing beans  ou objets du domaine, ou encore d'exécuter des opérations simples sans polluer une vue avec des  scriplets  qui s'intègre mal. Similaires à JSP/JSTL  ${…} Ces expressions sont évalués à l'exécution de la page
JSF EL (suite …) On peut utiliser le langage d'expression de JSF pour: Insérer des composants dans des objets; Exposer les propriétés d'une JavaBean, d'une Collection, ou de types simples; Référencer des méthodes (action, listener, validation, …); Exécuter des opérations logiques ou mathématiques; En plus, sont supportées les propriétés imbriquées.
JSF EL (suite …) value-binding method-binding Pour un  listener Pour une action Pour un  validator Pour un  converter
Les composants standards de JSF
Implémentations de la spécification Sun RI 1.2 Apache MyFaces 1.1 (1.2 pas encore release)
Librairies de composants Oracle ADF Faces ICEFaces JBoss RichFaces JBoss Ajax4JSF Apache Tomahawk Apache Sandbox Apache Trinidad And many more … + +
Outils Eclipse JSF Tools (WTP 2.0) IBM RAD NetBeans Sun Java Studio Creator RHDS / Exadel MyEclipse IDE Oracle JDeveloper BEA Workshop for JSF + +
Références Livres JavaServer Faces in Action Core JSF Sites Webs JCP.org JSR 127 JCP.org JSR 252 jsfcentral.com Blogs Kito Mann ( http://weblogs.java.net/blog/kito75/) Ed Burns ( http://weblogs.java.net/blog/edburns/) Craig Mclanahan ( http://blogs.sun.com/craigmcc/)
Questions? [email_address] Ext. 2112

Contenu connexe

Tendances

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
Algeria JUG
 
Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinal
Aymen Drira
 
J2eeintro
J2eeintroJ2eeintro
J2eeintro
medbmb
 
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
ENSET, Université Hassan II Casablanca
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
Ines Ouaz
 
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
Antoine Rey
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
Stéphane Traumat
 
J2ee
J2eeJ2ee
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
Nathaniel Richand
 
1 Introduction
1 Introduction1 Introduction
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
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
Korteby Farouk
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
Sabri Bouchlema
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
Mejdeddine Bouzouita
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces Mobile
Sylla Mamoudou
 
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
Sabri Bouchlema
 
Tutoriel J2EE
Tutoriel J2EETutoriel J2EE
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
Antoine Rey
 
Ejb3 3-message-driven-beans fr
Ejb3 3-message-driven-beans frEjb3 3-message-driven-beans fr
Ejb3 3-message-driven-beans fr
Ben Abdallah Helmi
 

Tendances (20)

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinal
 
J2eeintro
J2eeintroJ2eeintro
J2eeintro
 
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
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
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
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 
J2ee
J2eeJ2ee
J2ee
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
1 Introduction
1 Introduction1 Introduction
1 Introduction
 
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...
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces Mobile
 
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
 
Tutoriel J2EE
Tutoriel J2EETutoriel J2EE
Tutoriel J2EE
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Ejb3 3-message-driven-beans fr
Ejb3 3-message-driven-beans frEjb3 3-message-driven-beans fr
Ejb3 3-message-driven-beans fr
 
Ejb3 2-session-beans fr
Ejb3 2-session-beans frEjb3 2-session-beans fr
Ejb3 2-session-beans fr
 

Similaire à Présentation de JavaServer Faces

JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdf
MahmoudiOussama
 
Spring 3.0
Spring 3.0Spring 3.0
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
ENSET, Université Hassan II Casablanca
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux Servlets
François Charoy
 
BordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets JavaBordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets Java
Camblor Frédéric
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
Guillaume Sauthier
 
Drools et les moteurs de règles
Drools et les moteurs de règlesDrools et les moteurs de règles
Drools et les moteurs de règles
Publicis Sapient Engineering
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un blian
tareq
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
teejug
 
Support cours j2_ee
Support cours j2_eeSupport cours j2_ee
Support cours j2_ee
Christophe Zome
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
Gregory Renard
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
Mathieu Hicauber
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
Abdelhakim Bachar
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?
PALO IT
 
OW2 JASMINe
OW2 JASMINeOW2 JASMINe
OW2 JASMINe
Guillaume Sauthier
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
aliagadir
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
Youness Boukouchi
 
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
Microsoft
 

Similaire à Présentation de JavaServer Faces (20)

JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdf
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
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
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux Servlets
 
BordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets JavaBordeauxJUG : Portails &amp; Portlets Java
BordeauxJUG : Portails &amp; Portlets Java
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 
Drools et les moteurs de règles
Drools et les moteurs de règlesDrools et les moteurs de règles
Drools et les moteurs de règles
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un blian
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
 
Support cours j2_ee
Support cours j2_eeSupport cours j2_ee
Support cours j2_ee
 
Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
2
22
2
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?
 
OW2 JASMINe
OW2 JASMINeOW2 JASMINe
OW2 JASMINe
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
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
 

Présentation de JavaServer Faces

  • 1. JavaServer Faces JS Bournival 18 juillet 2007
  • 2. Agenda Introduction Historique Architecture Concepts clés Cycle de vie d’une requête Expression language Traction dans l’industrie Références Questions
  • 3. JavaServer Faces? JSF est la spécification d’un cadre d’application pour la couche de présentation d’une application web. JSF fait partie, aussi de la spécification globale de JEE 5. JSR 127 : spécification initiale résultant en l’implémentation de JavaServer Faces 1.1 JSR 252 : spécification de JSF 1.2, corrigeant plusieurs problèmes, et ajoutant certaines nouvelles fonctionnalités JSR 314 : spécification de JSF 2.0 … à suivre.
  • 4. Buts recherchés et Historique RAD Rapid Application Development RIA Rich Internet Application Permettre, pour les développeurs, de facilement lier, dans un contexte stateful , des composants backend , avec des évènements émanant de l’interface-utilisateur.
  • 5. Buts recherchés et Historique … it is also aimed directly at solving many of the common problems encountered when writing applications for HTML clients that communicate via HTTP […] These applications are typically form-based, and are comprised of one or more HTML pages with which the user interacts to complete a task or set of tasks. Craig McClanahan, Ed Burns, & Roger Kitain Java Specification Request (JSR) 127 &quot; &quot;
  • 8. Les concepts clé Les 8 éléments à maîtriser dans JSF UICOMPONENT RENDERER VALIDATOR BACKING BEANS CONVERTER EVENTS & LISTENERS MESSAGES NAVIGATION
  • 9. Les concepts clé (1/8) UICOMPONENT Abstraction et encapsulation de fonctionnalités pour un composant possédant un état, et une représentation graphique
  • 10. Les concepts clé (2/8) RENDERER renderer par défaut: HTML 4.01 direct implementation model VS. delegated implementation model Organisé render kits
  • 11. Les concepts clé (5/8) CONVERTER prend en charge encoding-decoding converters de base fournis par JSF <f:convertNumber /> <f:convertDateTime /> <h:inputText value=&quot;#{user.balance}&quot;> <f:convertNumber type=&quot;currency&quot; currencyCode=&quot;KZT&quot;/> </h:inputText> <h:inputText value=&quot;#{user.dateOfBirth}&quot;> <f:convertDateTime pattern=&quot;MM/dd/yyyy (hh:mm a)&quot;/> </h:inputText> Petits exemples boboches mais qui disent tout:
  • 12. Les concepts clé (3/8) VALIDATOR directement dans l'implémentation du composant via une méthode d'une backing bean via une classe validateur générique <h:inputText value=&quot;#{user.name}&quot;> <f:validateLength minimum=“13&quot;/> </h:inputText> <h:inputText value=&quot;#{user.creditCard}&quot;> <f:validator validatorId=“com.nurun.CreditCardValidator&quot;/> </h:inputText>
  • 13. Les concepts clé (4/8) BACKING BEANS Lier la valeur d'un composant à un attribut d'une backing bean Attacher un composant à un attribut d'une backing bean Déclaration dans le fichier de configuration de JSF Lien avec composantes d'affaires ( EJB3 , Spring ) Niveau de portée Application, Session ou Requête <h:commandButton action= “#{myBean.faitKekchose}“ … />
  • 14. Les concepts clé (6/8) EVENTS & LISTENERS Types value change events action events data model events phase events Les listeners sont appelés lors de la soumission Peut se présenter sous la forme d’une classe, ou simplement d’une méthode d’une backing bean <h:inputText value=&quot;#{myBean.name}&quot; valueChangeListener=&quot;#{myBean.react}&quot; /> Petit exemple:
  • 15. Les concepts clé (7/8) MESSAGES Erreurs d'application, ou de validation Composants pouvant ajouter des messages Rien de très magique ici, se compare aisément aux tags du style <html:errors/> de Struts FacesContext context = FacesContet.getCurrentInstance(); context.addMessage(null, new FacesMessage( &quot; blah.&quot;) ; <h:messages style= “color: blue“ /> Dans la vue: Dans la backing bean :
  • 16. Les concepts clé (8/8) NAVIGATION Déclaration des règles de navigation dans le fichier de configuration de JSF, faces-config.xml Basé sur des outcome sous la forme de chaîne de caractères Rien de nouveau ici pour les habitués de Struts <navigation-rule> <from-view-id> /welcome.jsp </from-view-id> <navigation-case> <from-outcome> success </from-outcome> <to-view-id> /response.jsp </to-view-id> </navigation-case> </navigation-rule> Exemple dans faces-config.xml:
  • 17. Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
  • 18. Le cycle de vie d'une requête (1/6) Restore View Construction ou mise à jour de l'arbre logique de composants <input type=&quot;hidden&quot; name=&quot;com.sun.faces.VIEW&quot; value=&quot; H4sIAAAAAAAAAMVaa2wcVxW+u347bmsnKXk1zTYPN2ncfT/zaOvYeayyboLXSYkjcMYzd+2NZ2emM7P2uFGiFNGCqIRAJRVIASrBj/4of0AI1B+8UWlQi4jgByCkCBVFlSgI/pSHoJx757m7d8axHZxVMp5799x7zz3fOd8599qvv486NBVFeLkW1epStMLxWIvW9aoYnVAxLutqndfrKt5Y2Tb60LULkTBqL6FufrYqCiqWdPRg6SI3z8XIgNiwqnKLpaqmHyyhHl7kNO1proZ1tN6UETlpJgYTVqUZEOgkK+majjZ4ZjjBabNjnAJfh6vCs+gKChsKaLeBSJhKOWsYz9/c/uU3ua+0oVARtWvV57ChIITaFtrh2auRwUjR0T4y1LC2BZtUZAnUjs7qNTF6Ah6n6rpS1yewoYNw+1RVyDhD98jqTJS7yBnpi1qFvrjDhqFV1jm9rlnDsuYw+uwADdob9CDPbkuyECipo/QSGpexiHn9iCyLmJNGZjE/Ny0bYKQB10iWGT/htq+T3Z+btq7RzHpiKq7McZDjFgE2XE2vUynKJ7 … == &quot; />
  • 19. Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
  • 20. Le cycle de vie d'une requête (2/6) Apply Request Values Insertion des valeurs dans chacun des composants de l'arbre POST /path/view.faces HTTP/1.0 From: someone@somewhere.com User-Agent: HTTPTool/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 32 Myform:mycomponent=bonhomme+carnaval& … HTTP POST request
  • 21. Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
  • 22. Le cycle de vie d'une requête (3/6) Process Validations JSF demande à chacun des composants de se convertir et de se valider (validateur externes etc.) X
  • 23. Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
  • 24. Le cycle de vie d'une requête (4/6) Update Model Values Insertion des valeurs dans le modèle ( backing bean et autres objets du modèle)
  • 25. Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
  • 26. Le cycle de vie d'une requête (5/6) Invoke Application Exécute la méthode action (ou autre listener enregistré) appelé par l'évènement par défaut déclenché par les composants de type « command » (lien ou bouton)
  • 27. Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF
  • 28. Le cycle de vie d'une requête (6/6) Render Response Affiche la réponse en mettant à contribution le mécanisme de vue utilisé (JSP, Facelets)
  • 29. JSF EL EL == Expression Language Sont sous la forme #{…} Permet de dynamiquement manipuler les attributs des backing beans ou objets du domaine, ou encore d'exécuter des opérations simples sans polluer une vue avec des scriplets qui s'intègre mal. Similaires à JSP/JSTL ${…} Ces expressions sont évalués à l'exécution de la page
  • 30. JSF EL (suite …) On peut utiliser le langage d'expression de JSF pour: Insérer des composants dans des objets; Exposer les propriétés d'une JavaBean, d'une Collection, ou de types simples; Référencer des méthodes (action, listener, validation, …); Exécuter des opérations logiques ou mathématiques; En plus, sont supportées les propriétés imbriquées.
  • 31. JSF EL (suite …) value-binding method-binding Pour un listener Pour une action Pour un validator Pour un converter
  • 33. Implémentations de la spécification Sun RI 1.2 Apache MyFaces 1.1 (1.2 pas encore release)
  • 34. Librairies de composants Oracle ADF Faces ICEFaces JBoss RichFaces JBoss Ajax4JSF Apache Tomahawk Apache Sandbox Apache Trinidad And many more … + +
  • 35. Outils Eclipse JSF Tools (WTP 2.0) IBM RAD NetBeans Sun Java Studio Creator RHDS / Exadel MyEclipse IDE Oracle JDeveloper BEA Workshop for JSF + +
  • 36. Références Livres JavaServer Faces in Action Core JSF Sites Webs JCP.org JSR 127 JCP.org JSR 252 jsfcentral.com Blogs Kito Mann ( http://weblogs.java.net/blog/kito75/) Ed Burns ( http://weblogs.java.net/blog/edburns/) Craig Mclanahan ( http://blogs.sun.com/craigmcc/)