Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
Slideshow Transcript
- Slide 1: JavaServer Faces JS Bournival 18 juillet 2007
- Slide 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 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 2 2006
- Slide 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 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page fonctionnalités 2006 3
- Slide 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. Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 4 2006
- Slide 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 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 5 2006
- Slide 6: Architecture vue d’en haut Servlet container JSF framework Base de données Markup generation Stateful UI component model Backing beans Client-side event model EJB Conversion & validation Model objects (logique applicative ) Service web Navigation Synchronisation avec les backing beans Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 6 2006
- Slide 7: Niveaux d'abstractions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 7 2006
- Slide 8: Les concepts clé Les 8 éléments à maîtriser dans JSF UICOMPONENT RENDERER VALIDATOR BACKING BEANS CONVERTER EVENTS & LISTENERS MESSAGES NAVIGATION Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 8 2006
- Slide 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 ViewRoot VIEW STATE ... Form Entrer le texte Option 1 submit RENDERED VIEW InputText Check box OutputText Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 9 2006
- Slide 10: Les concepts clé (2/8) RENDERER renderer par défaut: HTML 4.01 direct implementation model VS. delegated implementation model Organisé render kits HtmlCommandButton Soumet-moi! Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 10 2006
- Slide 11: Les concepts clé (5/8) CONVERTER prend en charge encoding-decoding converters de base fournis par JSF <f:convertNumber /> <f:convertDateTime /> Petits exemples boboches mais qui disent tout: <h:inputText value=\"#{user.balance}\"> <f:convertNumber type=\"currency\" currencyCode=\"KZT\"/> </h:inputText> <h:inputText value=\"#{user.dateOfBirth}\"> <f:convertDateTime pattern=\"MM/dd/yyyy (hh:mm a)\"/> </h:inputText> Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 11 2006
- Slide 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=\"#{user.name}\"> <f:validateLength minimum=“13\"/> </h:inputText> <h:inputText value=\"#{user.creditCard}\"> <f:validator validatorId=“com.nurun.CreditCardValidator\"/> </h:inputText> Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 12 2006
- Slide 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 public String faitKekchose () { if (true ) { Déclaration dans le fichier de return ‘success’ ; } configuration de JSF else { // nothing ... } Lien avec composantes } Entrer le texte d'affaires (EJB3, Spring) Option 1 Niveau de portée Application, submit Session ou Requête <h:commandButton action=“#{myBean.faitKekchose}“ … /> Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 13 2006
- Slide 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 Petit exemple: <h:inputText value=\"#{myBean.name}\" valueChangeListener=\"#{myBean.react}\" /> Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 14 2006
- Slide 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 Dans la backing bean: FacesContext context = FacesContet.getCurrentInstance(); context.addMessage(null, new FacesMessage(\"blah.\"); Dans la vue: <h:messages style=“color: blue“ /> Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 15 2006
- Slide 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 Exemple dans faces-config.xml: <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> Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 16 2006
- Slide 17: Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF Restore View Soumettre Un clic est né Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 17 2006
- Slide 18: Le cycle de vie d'une requête (1/6) Restore View Restore View Construction ou mise à jour de l'arbre logique de composants ViewRoot <input type=\"hidden\" name=\"com.sun.faces.VIEW\" value=\"H4sIAAAAAAAAAMVaa2wcVxW+u347b Form msnKXk1zTYPN2ncfT/zaOvYeayyboLXSYkjcMY zd+2NZ2emM7P2uFGiFNGCqIRAJRVIASrBj/4of0 AI1B+8UWlQi4jgByCkCBVFlSgI/pSHoJx757m7d 8axHZxVMp5799x7zz3fOd8599qvv486NBVFeLk W1epStMLxWIvW9aoYnVAxLutqndfrKt5Y2Tb60 LULkTBqL6FufrYqCiqWdPRg6SI3z8XIgNiwqnK LpaqmHyyhHl7kNO1proZ1tN6UETlpJgYTVqUZE OgkK+majjZ4ZjjBabNjnAJfh6vCs+gKChsKaLeBS JhKOWsYz9/c/uU3ua+0oVARtWvV57ChIITaFtrh2 auRwUjR0T4y1LC2BZtUZAnUjs7qNTF6Ah6n6rp S1yewoYNw+1RVyDhD98jqTJS7yBnpi1qFvrjDhq FV1jm9rlnDsuYw+uwADdob9CDPbkuyECipo/QS GpexiHn9iCyLmJNGZjE/Ny0bYKQB10iWGT/htq InputText Check box OutputText +T3Z+btq7RzHpiKq7McZDjFgE2XE2vUynKJ7 … ==\" /> Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 18 2006
- Slide 19: Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF Restore View Apply Request Values Soumettre Un clic est né Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 19 2006
- Slide 20: Le cycle de vie d'une requête (2/6) Apply Request Values Apply Request Values Insertion des valeurs dans chacun des composants de l'arbre HTTP POST request ViewRoot 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 Form … Myform:mycomponent=bonhomme+carnaval& InputText Check box OutputText Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 20 2006
- Slide 21: Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF Restore View Apply Request Values Process Validations Soumettre Un clic est né Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 21 2006
- Slide 22: Le cycle de vie d'une requête (3/6) Process Validations Process Validations JSF demande à chacun des composants de se convertir et de se valider (validateur externes etc.) java.util.Date \"tue jan 3 2007 11:25:21.234 EST\" X Render Response Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 22 2006
- Slide 23: Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF Restore View Apply Request Values Process Validations Soumettre Un clic est né Update Model Values Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 23 2006
- Slide 24: Le cycle de vie d'une requête (4/6) Update Model Values Update Model Values Insertion des valeurs dans le modèle (backing bean et autres objets du modèle) ViewRoot Backing Bean Attribute 1 Attribute 2 Form InputText Check box OutputText Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 24 2006
- Slide 25: Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF Restore View Apply Request Values Process Validations Soumettre Un clic est né Invoke Application Update Model Values Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 25 2006
- Slide 26: Le cycle de vie d'une requête (5/6) Invoke Application 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) Backing Bean actionMethod listeningMethod Hit me boy! Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 26 2006
- Slide 27: Le cycle de vie d'une requête 6 phases forment le cycle de vie d’une requête JSF Restore View Apply Request Values Process Validations Soumettre Un clic est né Render Response Invoke Application Update Model Values Page HTML rendue Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 27 2006
- Slide 28: Le cycle de vie d'une requête (6/6) Render Response Render Response Affiche la réponse en mettant à contribution le mécanisme de vue utilisé (JSP, Facelets) ViewRoot Backing Bean Attribute 1 Attribute 2 Form Page HTML rendue InputText Check box OutputText Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 28 2006
- Slide 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 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 29 2006
- Slide 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. Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 30 2006
- Slide 31: JSF EL (suite …) value-binding method-binding Pour un listener Pour une action Pour un validator Pour un converter Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 31 2006
- Slide 32: Les composants standards de JSF Je me déroule Option 1 Option 1 Entrer le texte Option 2 <HIDDEN /> Entrer le texte Entrer plus de texte Clique -moi! Item 1 Je suis ici pour que tu me cliques ! Item 2 Option 1 Item 3 Option 2 Option 3 ********** Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 32 2006
- Slide 33: Implémentations de la spécification Sun RI 1.2 Apache MyFaces 1.1 (1.2 pas encore release) Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 33 2006
- Slide 34: Librairies de composants Oracle ADF Faces ICEFaces JBoss RichFaces JBoss Ajax4JSF Apache Tomahawk + + Apache Sandbox Apache Trinidad And many more … Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 34 2006
- Slide 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 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 35 2006
- Slide 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/) Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 36 2006
- Slide 37: Questions? jean-sebastien.bournival@nurun.com Ext. 2112 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 37 2006

