Presentation jsf2

Embed Size (px)

DESCRIPTION

Présentation JSF2

Citation preview

  • 1. JSF 2 Damien Gouyette et Franois Petitit

2. Damien GOUYETTE Franois PETITIT 3. Intervenant

  • Nom de l'intervenant
  • Damien GOUYETTE

Expert technique java / JEE au sein de GENERALI. Il assure au sein d'une quipe transverse, du support, de la documentation, et participe ladfinition des normes de dveloppement. Damien GOUYETTE est plus particulirement spcialis dans le dveloppement d'IHM Blog :http://www.cestpasdur.com

    • Franois PETITIT

Consultant chez OCTO Technology, Franois s'intresse tout particulirement l'univers Java/JEE. C'est au cours d'une mission dans une quipe transverse d'aide aux projets Java qu'il a rencontr Damien Gouyette, avec qui il a pu approfondir la technologie JSF. 4. Objectifs de la prsentation

  • l'issue de cette prsentation, vous connaitrez :
  • Les bases de JSF

5. Les nouveauts de JSF 2 6. Sommaire

  • 1 - Introduction

7. 2 - Le framework JSF 8. 3 - Les outils 4 - Conclusion 9. Introduction

  • Objectifs de JSF :
  • Fournir un standard JEE, spcifi dans une JSR, pour le dveloppement d'IHM riches

10. Maximiser la productivit des dveloppeurs

  • Fournir les fonctionnalits rcurrentes et avances (validations, conversions, Ajax, etc...)

11. Masquer la complexit 12. Introduction

  • Historique

1.0 1.1 1.2 2.0 2004 2005 2006 2007 2008 2009 JSR 252 JSR 127 JSR 314 Version initiale Correction debugs Amliorations et corrections JEE 6 multiples nouveauts 13. Excution dans le navigateur Plug-in requis Excution ct serveur

  • Les principaux frameworks RIA Java et autres :

1 - Introduction JSF Wicket Spring MVC GWT DOJO Applet JavaFX Flex Silverlight 14. Sommaire

  • 1 - Introduction

15. 2 - Le framework JSF 16. 3 - Les outils 4 - Conclusion 17. 2 - Le framework JSF 2.1 JSF & JEE 2.2 - Pattern de JSF 2.3 - Cycle de vie 2.4 - Les managed beans 2.5 - Orient composants 2.6 - AJAX2.0 2.7 Templating de pages2.0 2.8 JSP vs Facelet 2.9 -Traitement des ressources 18. 2.1 - JSF2 et JEE

  • JSF 2 compatible JEE 5, JSF 1.X de base

19. Fait partie de JEE 6 : 20. 2.1 - JSF 2 et JEE

  • Fait partie du profil web de JEE 6 :
  • Servlet 3.0

21. JavaServer Pages (JSP) 2.2 22. Expression Language (EL) 2.2 23. Debugging Support for Other Languages (JSR-45) 1.0 24. Standard Tag Library for JavaServer Pages (JSTL) 1.2 25. JavaServer Faces (JSF) 2.0 26. Common Annotations for Java Platform (JSR-250) 1.1 27. Enterprise JavaBeans (EJB) 3.1 Lite 28. Java Transaction API (JTA) 1.1 29. Java Persistence API (JPA) 2.0 30. 2 - Le framework JSF 2.1 JSF & JEE 2.2 - Pattern de JSF 2.3 - Cycle de vie 2.4 - Les managed beans 2.5 - Orient composants 2.6 - AJAX2.0 2.7 Templating de pages2.0 2.8 JSP vs Facelet 2.9 -Traitement des ressources 31. MVC 2 et JSF 2 Controller web.xml Faces-config (facultatif) Back office ManagedBeans Vue Client Ct client Ct serveur B.O. 32. 2. Le framework JSF 2.1 JSF & JEE 2.2 - Pattern de JSF 2.3 - Cycle de vie 2.4 - Les managed beans 2.5 - Orient composants 2.6 - AJAX2.0 2.7 Templating de pages2.0 2.8 JSP vs Facelet 2.9 -Traitement des ressources 33. 2.3 - Cycle de vie Le cycle de vie = les tapes ct serveur lors d'une requte : Restauration de la vue Conversions Validations Mises--jour des managed beans Invocation du mtier & navigation Cration de la rponse Requte Rponse 34. 2.3 Conversion

  • JSF fournit :
  • Conversion automatique de la valeur d'un attribut de la requte (chanes de caractres) en objet Java.

35. Support des types primitifs, des dates, 36. Support de convertisseurs personnaliss et configurables. 37. Configuration de l'affichage. Exemple : affichage de dates ->Mardi 13 octobre 2008 38. 2.3 - Validation

  • Plusieurs moyens de valider :
  • Dans la vue
  • avec des balises fournies par JSF

39. Avec des validateurs personnaliss implmentant l'interface javax.faces.validator. Permet de valider au plus tt avec des validateurs personnaliss. Exemples : validation d'adresse mail... Dans le managed bean

  • en ajoutant des messages d'erreur dans le contexte JSF

Dans les entits et/ou dans les managed beans en utilisant la JSR-303 ( Hibernate validator ), en utilisant le tag f:validateBean 40. Sommaire : le framework 2.1 JSF & JEE 2.2 - Pattern de JSF 2.3 - Cycle de vie 2.4 - Les managed beans 2.5 - Orient composants 2.6 - AJAX2.0 2.7 Templating de pages2.0 2.8 JSP vs Facelet 2.9 -Traitement des ressources 41. 2.4 - managed Bean

    • Classe java qui contenant la logique de prsentation connecteau mtier.

Scope :

  • Application

42. Session 43. View2.0 44. Request 45. 2.4 - ManagedBean

  • JSF 2 simplifie la configuration
  • Avant, dclaration dans le fichier faces-config.xml :
    • Aprs, dclaration avec des annotations directement dans le managed bean:

bidonBean org.parisjug.jsf.controller.ContactManagedBean request @ManagedBean @RequestScoped public class ContactManagedBean { } 46. 2.4 - Vues ManagedBean

  • Lien vues contrleurs grce l'Expression Language (EL)

@ManagedBean 2.0 @RequestScoped 2.0 public classContactBean{ // proprits et accesseurs private Stringname ; //code mtier Public Stringadd (){ return success ; } } ... ... ContactBean.java new.xhtml 47. Sommaire : le framework 2.1 JSF & JEE 2.2 - Pattern de JSF 2.3 - Cycle de vie 2.4 - Les managed beans 2.5 - Orient composants 2.6 - AJAX2.0 2.7 Templating de pages2.0 2.8 JSP vs Facelet 2.9 -Traitement des ressources 48.

  • 2.5 - Orient composant
  • Un composant est un lment d'interface utilisateur,configurableetrutilisable .

49. Un composant peut tre une simple zone de texte, ou complexe (table pagine). 50. Exemples de composants complexes : tables pagines, diteur WYSIWYG... 51. Gestion d'vnements sur les composants (sans AJAX) 52. Les composants vivent sur le serveur

  • Chaque action utilisateur donne lieu destraitements pour mise jour ct serveur.

53. L'tat des composants est restaurpuis sauvegard chaque cycleRequte / Rponse. 54. 2.5 - Les composants Navigateur client Form Label:nom InputText:nom Label:prenom InputText: prenom Button:ok Panel Panel Ct serveur View 55. 2.5 - Les composants

  • JSF2 propose EZComp2.0
  • Dclaration: /webapp/ressources/hello/hello.xhtml
    • Utilisation: /webapp/index.xhtml

//Dclaration des attributs du composant < composite:interface > < composite:attribute name="qui" required="true" /> // Implmentation du composant < composite:implementation > Hello# {cc.attrs.qui} < ez :hello qui="world"/> 56. Ezcomp demo 57. 2.5 - Les composants

  • Librairies :www.ajaxjsf.net(anc. jsfmatrix)

58. Sommaire : le framework 2.1 JSF & JEE 2.2 - Pattern de JSF 2.3 - Cycle de vie 2.4 - Les managed beans 2.5 - Orient composants 2.6 - AJAX2.0 2.7 Templating de pages2.0 2.8 JSP vs Facelet 2.9 -Traitement des ressources 59. 2.6 - AJAX

  • Gestion native d'AJAX -> il suffit d'ajouter la balise 2.0

60. Optimisation : traitement et rendu partiels 61. Ajax demo 62. Sommaire : le framework 2.1 JSF & JEE 2.2 - Pattern de JSF 2.3 - Cycle de vie 2.4 - Les managed beans 2.5 - Orient composants 2.6 - AJAX2.0 2.7 - Templating de pages2.0 2.8 - JSP vs Facelet 2.9 -Traitement des ressources 63. Templating / rutilisation

  • template.xhtml
  • Page utilisant ce template

< h1>Hello world

valeurpar defaut

64. 2.8 JSPVS.Facelet

  • JSP : compil en servlet
  • Permet de limiter les composants crer (c:if), ceux ci ne seront alors pas prsents dans l'arbre JSF.

65. Tags JSP rcuprent leurs valeurs la phase 1 (restore_view) Facelet : arbre de composant

  • JSFrcuprent leurs valeurs la phase 6 (render_response)

66. Bnfices du cycle de vie (conversion, validation...) 67. Plus lent que les JSP du fait du cycle de vie. 68. Templating / rutilisation 69. 2.9 Ressources statiques

  • CSS, javascript, images
  • Emplacements
  • /resources

70. /META-INF/resources Structure des resources

  • [localePrefix][libraryName] [libraryVersion]resourceName[resourceVersion]

71. [] = facultatif 72. EL : #{resource[':']}

73. Facelet demo 74. En plus...

  • Quelques autres fonctionnalits intressantes :
  • Internationalisation des textes affichs

75. Diffrents profils d'utilisation : dveloppement, production, unitTest, etc.2.0 76. Support de Groovy pour les composants JSF (managed beans, validateurs, convertisseurs...) 77. Disponibilit de GET en plus de POST :Bookmark 2.0 78. Sommaire

  • 1 - Introduction

79. 2 - Le framework JSF 80. 3 - Les outils 4 - Conclusion 81. Les outils

  • Librairies de composants
  • Richfaces 4.0 Alpha 1, IceFaces, PrimeFaces...

Serveurs d'application

  • Glassfish, Jboss, Tomcat, Jetty

IDE

  • NetBeans 6.8M1, Eclipse et JbossTools 3.1 M4,IntelliJ IDEA...

Cration d'un composant

  • Archetypes Maven, Richfaces CDK

82. Les outils

  • Tests
  • Outils spcifiques JSF permettant des tests white-box, ct client et serveur, statiques, performances : Jboss JSFUnit, FacesTester
  • Exemple de test JSFUnit :

83. public void testHelloWorld() { JSFClientSession client = new JSFClientSession("/index.faces"); JSFServerSession server = new JSFServerSession(client); client.setParameter(input_name_text, Damien); client.submit(submit_button); assertEquals("/hello.jsp", server.getCurrentViewID()); assertTrue(client.getWebResponse().getText().contains(Hello, Damien)); assertEquals("Damien", server.getManagedBeanValue("#{name.text}")); } Outils web gnriques pour des tests black-box : Selenium, HTTPUnit... 84. Sommaire

  • 1 - Introduction

85. 2 - Le framework JSF 86. 3 - Les outils 4 - Conclusion 87. Synthse des nouveauts de JSF 2 Nouvelles fonctionnalits Simplification AJAX inclus et optimis Dveloppement de composants facilit Profils d'utilisation Navigation facilite Externalisation des ressources statiques Rduction de la conf XML grce aux annotations Nouveaux scopes pour les managed beans Support de GET en plus du POST 88. Pour aller plus loin

  • Code source de l'application :http://www.cestpasdur.com/svn/webapp-contacts-jsf2/

89. Refcard JSF2 :http://refcardz.dzone.com/refcardz/javaserver-faces-20 90. Le site de la spcification JSR-314 :http://jcp.org/en/jsr/detail?id=314 91. Blog Ed Burns, un des spec leader :http://www.java.net/blogs/edburns 92. Liste des librairies tierces-parties :http://www.jsfmatrix.net/ 93. Le livre d'Antonio Goncalves sur JEE 6 en gnral: Beginning Java EE 6 platform with Glassfish v3 94. Questions / Rponses 95. Sponsors 96. Merci de votre attention! 97. Licence

  • http://creativecommons.org/licenses/by-nc-sa/2.0/fr/