Et pourquoi pas JEE ?
Jeudi 25 Octobre 2012
Patrick Guillerm
Introduction JEE 6 Seam 3 JSF Conclusion
1 Introduction
2 JEE 6
3 Seam 3
4 JSF
5 Conclusion
Introduction JEE 6 Seam 3 JSF Conclusion
Pr´esentation
Patrick Guillerm, d´eveloppeur JEE
Backoffice de l’Assembl´ee des cha...
Introduction JEE 6 Seam 3 JSF Conclusion
Les objectifs
Quels objectifs pour ce Barcamp ?
Casser les id´ees re¸cues sur JEE...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Qu’est ce que le JEE
Java Entreprise Edition
Ensemble de normes ( JSR )
De...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Les origines du JEE
JEE historique
Timeline repr´esentant les sorties de J...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Quelles diff´erences entre JEE5 et JEE6?
Evolution entre JEE5 et JEE6
Simpl...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6
Les principales nouvelles normes
JSR-299 : CDI
JSR-33...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: EAR ou WAR ?
Evolution entre JEE5 et JEE6
Architecture d’un EAR Architectu...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6 : JPA 2
Les principales nouvelles normes
Meilleure ge...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6 : JPA 2
Les Criteria
1 @Named
2 @ViewScoped
3 public ...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6 : JPA 2
EnityManager exemple : NamedNativeQuery
1 @En...
Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6 : Testabilit´e
Tester les applications JEE sans doule...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Qu’est que Seam ?
Concurrent direct de Spring
Con¸cu par le cr´eateur d’H...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: les cas d’utilisation ?
Les cas d’utilisations
Les backoffices : grˆace `a ...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: les cas d’utilisation ?
Les avantages
Productivit´e
Unification des brique...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Les principaux modules
JBoss Weld : impl´ementation de
r´ef´erence de la ...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Contexts and Dependency Injection
Activation du contexte CDI
1 <?xml vers...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Contexts and Dependency Injection
D´eclarer un Web bean : @Named
Cot´e Ja...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Contexts and Dependency Injection
L’injection de ressources
1 @Inject
2 @...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Les scopes
Les scopes des Web Beans
@ApplicationScoped : actif durant tou...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Ev´enements
Que sont les ´ev´enements ?
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Ev´enements
1 @Target({TYPE, METHOD, PARAMETER, FIELD})
2 @Retention(RUNT...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Ev´enements
Exemple d’´ev´enements existants
@Before Avant le d´ebut du c...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Bean validator
JSR-303 : Bean validator
Permet la validation par annotati...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Restriction des vues
3 points pour la restriction des vues
Cr´eation des ...
Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Restriction des vues
Cr´eation du Page.java
1 import org.jboss.seam.faces...
Introduction JEE 6 Seam 3 JSF Conclusion
PrettyFaces : URL Rewriting
Le pretty-config.xml
1 <?xml version="1.0" encoding="U...
Introduction JEE 6 Seam 3 JSF Conclusion
PrettyFaces : URL Rewriting
Contrˆoles avanc´es
1 <!−−========[ REWRITE ]========...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2
Qu’est-ce que c’est ?
Framework de pr´esentation orient´e composants
Un ens...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: les nouveaut´es
Quoi de neuf dans JSF 2 ?
Page Description Language (Facel...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Cycle de vie
Le cycle de vie
Cycle de vie de JSF
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Page Description Language
Page HTML 5
1 <html>
2 <!−−============/ HEAD /=...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Page Description Language
Templating Facelets
1 <f:view xmlns="http://www....
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Page Description Language
H´eritage entre templates
H´eritage de templates...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Composants Composites
Cr´eation d’un composant composite
1 <ui:composition...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Composants Composites
Utilisation d’un composant composite
1 <ui:compositi...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Param`etre en GET
f:viewParam
http://localhost:8080/foobar/product.xhtml?p...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Ajax
f:ajax
1 <h:form id="form">
2 <h:panelGrid>
3 <h:inputText value="#{b...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Les biblioth`eques de composants
Les diff´erentes biblioth`eques
Richfaces ...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Richefaces
Utilisation de la JSR-303 : rich:validator
1 <!−− .... −−>
2
3 ...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Richefaces
Ajax Simplifi´e : Ajax4JSF et JQuery
1 <h:form>
2 <a4j:commandBu...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Richefaces
Exemple de composants et de sites
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Richefaces
Exemple de composants et de sites
JBoss RHQ JOPR
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Richefaces
Exemple de composants et de sites
TinyPM
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Richefaces
Exemple de composants et de sites
SchoolManager.pl
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Primefaces
Les diagrammes avec Primefaces
1 <h:panelGrid columns="2">
2 <p...
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Primefaces
Exemple de composants et de sites
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Primefaces
Exemple de composants et de sites
Musific
Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Primefaces
Exemple de composants et de sites
Kupon express
Introduction JEE 6 Seam 3 JSF Conclusion
Conclusion
Liens utiles
http://www.seamframework.org
http://www.jboss.org/richfac...
Introduction JEE 6 Seam 3 JSF Conclusion
Conclusion : Questions ? ou Trolls ?
Prochain SlideShare
Chargement dans…5
×

Et pourquoi pas JEE ?

635 vues

Publié le

EE et JSF : des technologies qui ont effrayé et fait souffrir bon nombre de développeurs ! Elles auront peut être laissé à certains d’entre vous un goût amer mais ont énormément évolué ces dernières années pour finalement devenir légères et productives. Découvrons en quoi ces solutions peuvent vous aider dans le cadre de vos différents projets et ouvrons un œil neuf sur ces technologies d’avenir.

Programme :
- JEE 6 : historique, nouveautés, testabilité
- JBoss Seam 3 – Framework de contrôle applicatif : context and dependancies injections, événements, Bean validator, restriction des vues
- JSF 2 – Framework de présentation graphique : page description language, composants composite, PrettyFaces, Ajax 4 JSF, RichFaces, PrimeFaces

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
635
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Et pourquoi pas JEE ?

  1. 1. Et pourquoi pas JEE ? Jeudi 25 Octobre 2012 Patrick Guillerm
  2. 2. Introduction JEE 6 Seam 3 JSF Conclusion 1 Introduction 2 JEE 6 3 Seam 3 4 JSF 5 Conclusion
  3. 3. Introduction JEE 6 Seam 3 JSF Conclusion Pr´esentation Patrick Guillerm, d´eveloppeur JEE Backoffice de l’Assembl´ee des chambres Fran¸caises de Commerce et d’Industrie (Seam 2) Le guichet entreprises (JSF) HEC - K-HUB (Nuxeo, Seam 2) Intranet de Generali france (Nuxeo, Seam 2) CADA - Cabinet du 1er ministre (Nuxeo, Seam 2, Selenium) YouTestIt (JEE6, Seam 3, JSF2)
  4. 4. Introduction JEE 6 Seam 3 JSF Conclusion Les objectifs Quels objectifs pour ce Barcamp ? Casser les id´ees re¸cues sur JEE Exposer les avanc´ees technologiques de cette norme Montrer qu’il existe autre chose que Spring Vous r´econcilier avec les EJB et JSF Mettre en avant les avantages et inconv´enients.
  5. 5. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Qu’est ce que le JEE Java Entreprise Edition Ensemble de normes ( JSR ) Des API ( javax.* ) La majorit´e des technologies Web en java Que doit contenir un projet pour ˆetre un projet JEE ? Des EJB Un conteneur de servlet + un conteneur d’EJB
  6. 6. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Les origines du JEE JEE historique Timeline repr´esentant les sorties de JavaEE ainsi que des principaux frameworks
  7. 7. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Quelles diff´erences entre JEE5 et JEE6? Evolution entre JEE5 et JEE6 Simplification des EJB Normalisation de l’injection de d´ependances Davantage de convention Meilleure testabilit´e (Tests unitaire, Arquillian ) Possibilit´e d’ˆetre utilis´e en Java SE Normalisation de la configuration de JPA Les impl´ementations de r´ef´erences Normes mises en obsol`ete (Entity CMP 2.x, JAX-RCP, ...)
  8. 8. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Nouveaut´es de JEE 6 Les principales nouvelles normes JSR-299 : CDI JSR-330 : @Inject JSR-303 : Bean Validator JSR-314 : Java Server Faces 2 JSR-317 : JPA 2 JSR-311 : JAX-RS 1.1 JSR-224 : JAX-WS 2.2 JSR-315 : Servlet API 3 etc ...
  9. 9. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: EAR ou WAR ? Evolution entre JEE5 et JEE6 Architecture d’un EAR Architecture d’un WAR
  10. 10. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Nouveaut´es de JEE 6 : JPA 2 Les principales nouvelles normes Meilleure gestion des collections (@Element-Collection) Les Map (@MapKeyColumn) Supression des liaisons orphelines (OneToMany et OneToOne) Criterias Lock pessimiste Order column (tris au moment de l’´ecriture) Des @Embedded dans des @Embedded Standardisation du fichier persistance.xml S´eparation de la norme JPA et des EJB
  11. 11. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Nouveaut´es de JEE 6 : JPA 2 Les Criteria 1 @Named 2 @ViewScoped 3 public class FoobarAction implements Serializable { 4 5 private static final long serialVersionUID = 1679635671732315892L; 6 7 @PersistenceContext 8 private EntityManager entityManager; 9 10 public Foobar findFoobar(final String name) { 11 Foobar result = null; 12 13 CriteriaBuilder criteria = entityManager.getCriteriaBuilder(); 14 CriteriaQuery<Foobar> criteriaQuery = criteria.createQuery(Foobar.class); 15 16 Root<Foobar> foobars = criteriaQuery.from(Foobar.class); 17 criteriaQuery.where(criteria.equal(Foobar.<String> get("name"), name)); 18 19 result = entityManager.createQuery(criteriaQuery).getSingleResult(); 20 21 return result; 22 } 23 }
  12. 12. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Nouveaut´es de JEE 6 : JPA 2 EnityManager exemple : NamedNativeQuery 1 @Entity 2 @NamedNativeQuery(name="SELECT_ALL_USER",query="select * from Foobar",resultClass=Foobar.class) 3 public class Foobar implements Serializable { 4 // Entity ... 5 } Interface listant les Named Query 1 @ConversationScoped @Named 2 public class FoobarAction { 3 @PersistenceContext 4 private EntityManager entityManager; 5 6 public List<Foobar> findAllFoobar() { 7 List<Foobar> result = entityManager.createNamedQuery("SELECT_ALL_USER").getResultList(); 8 return result; 9 } 10 } DAO
  13. 13. Introduction JEE 6 Seam 3 JSF Conclusion JEE 6: Nouveaut´es de JEE 6 : Testabilit´e Tester les applications JEE sans douleur EntityManagerFactory (jboss-javaee-6) EJBContainer (Glassfish embedded) Aller plus loin dans les tests Arquillian Selenium (attention aux ID Html )
  14. 14. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Qu’est que Seam ? Concurrent direct de Spring Con¸cu par le cr´eateur d’Hibernate : Gavin King Unifier le monde JEE (JPA / EJB / JSF) Framework Stateful orient´e composants Impl´ementation de r´ef´erence de la norme CDI Acteurs majeurs de la norme JEE 6
  15. 15. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: les cas d’utilisation ? Les cas d’utilisations Les backoffices : grˆace `a son orientation stateful Middleware : pour sa facilit´e d’int´egration avec les standards JEE (JAX-WS, JAX-RS,JPA,JMS,JASS,...) Site `a tr`es haute disponibilit´e : grˆace aux EJB et aux serveurs d’applications. Site avec des interfaces web tr`es riches : grˆace `a son framework Ajax, les diff´erents composants et au Page Description Language Site au domaine fonctionnel complexe : validation simplifi´ee , ´ev`enements Maintenabilit´e facilit´e : AoX, CoC et transparence entre composants
  16. 16. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: les cas d’utilisation ? Les avantages Productivit´e Unification des briques applicatives Puissante gestion des formulaires De l’Ajax sans la contrainte de l’´ecriture de code JavaScript M´ecanisme de templating tr`es puissant Framework orient´e composants Les inconv´enients Peu de d´eveloppeur connaissent ce framework en France Beaucoup de pr´ejuger sur Java EE Il est n´ecessaire de comprendre ce que l’on fait Le calcul d’une page JSF est un peu plus long Peu de d´eveloppeurs savent concevoir des composants
  17. 17. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Les principaux modules JBoss Weld : impl´ementation de r´ef´erence de la norme JSR-299 Seam Persistence : JPA 2 Seam Faces : JSF2 Seam Validation : extension pour la norme JSR-303 Seam Security : identification
  18. 18. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Contexts and Dependency Injection Activation du contexte CDI 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> 5 6 </beans> resources/META-INF/beans.xml Le simple fait d’avoir un fichier beans.xml dans le META-INF d’un jar permet d’ordonner `a Weld d’ajouter les Web beans dans son contexte.
  19. 19. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Contexts and Dependency Injection D´eclarer un Web bean : @Named Cot´e Java : 1 package org.jboss.seam.examples.actions 2 import javax.inject.Named; 3 import javax.enterprise.context.RequestScoped; 4 5 @RequestScoped 6 @Named 7 public class HelloTheWorld{ 8 9 private String foobar = "hello foo bar !"; 10 11 public String getFoobar(){ 12 return foobar; 13 } 14 15 public void setFoobar(final String foobar){ 16 this.foobar = foobar ; 17 } 18 } Cot´e JSF : 1 <h:outputText value="#{helloTheWorld.foobar}"/>
  20. 20. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Contexts and Dependency Injection L’injection de ressources 1 @Inject 2 @Resource("WEB-INF/beans.xml") 3 private URL beansXml; 4 5 @Inject 6 @Resource("WEB-INF/web.xml") 7 private InputStream webXml 8 9 @Inject 10 @Resource("META-INF/aws.properties") 11 private Properties awsProperties
  21. 21. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Les scopes Les scopes des Web Beans @ApplicationScoped : actif durant toute la vie de l’application @SessionScoped : actif durant la session HTTP @ConservationScoped : actif durant une conversation. @ViewScoped : actif tant que l’on est sur la mˆeme page @RequestScoped : actif le temps d’une requˆete HTTP @RenderScoped : actif uniquement durant le chargement d’une page @FlashScoped : micro scope destin´e aux notifications
  22. 22. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Ev´enements Que sont les ´ev´enements ?
  23. 23. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Ev´enements 1 @Target({TYPE, METHOD, PARAMETER, FIELD}) 2 @Retention(RUNTIME) 3 @Documented 4 @Qualifier 5 public @interface InitializeUser { 6 } 1 @Named 2 @Singleton 3 public class InitializeUsers{ 4 5 @Inject 6 @InitializeProduct 7 private Event<ProductPojoEvent> initializeOsAndBrowserEvent; 8 9 public void initialize(@Observes @InitializeUser UserPojoEvent value) { 10 log.info(value.toString()); 11 // process.... 12 initializeOsAndBrowserEvent.fire(new ProductPojoEvent("initializeProduct")); 13 } 14 }
  24. 24. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Ev´enements Exemple d’´ev´enements existants @Before Avant le d´ebut du cycle de vie JSF @After Apr`es le d´ebut du cycle de vie JSF @RestoreView A la phase ”RestoreView” @Initialized Quand l’application est initialis´ee @LoggedInEvent Lorsque l’utilisateur s’est identifi´e @PreLoggedOutEvent D´econnection d’un utilisateur @DidActivate A l’activation d’une session @WillPassivate A passivation d’une session
  25. 25. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Bean validator JSR-303 : Bean validator Permet la validation par annotations Unification de la validation ( front et backend ) Diverses annotations pr´e-existantes (@Email,@Size,@Pattern) Possibilit´e de cr´eer ses propres annotations pour la validation
  26. 26. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Restriction des vues 3 points pour la restriction des vues Cr´eation des rˆoles (Administrateur, contributeurs, etc...) Cr´eation de la validation des rˆoles Cr´eation du Pages.java
  27. 27. Introduction JEE 6 Seam 3 JSF Conclusion Seam 3: Restriction des vues Cr´eation du Page.java 1 import org.jboss.seam.faces.event.PhaseIdType; 2 import org.jboss.seam.faces.security.AccessDeniedView; 3 import org.jboss.seam.faces.security.LoginView; 4 import org.jboss.seam.faces.security.RestrictAtPhase; 5 import org.jboss.seam.faces.view.config.ViewConfig; 6 import org.jboss.seam.faces.view.config.ViewPattern; 7 import org.youtestit.security.roles.Admin; 8 9 @ViewConfig 10 public interface Pages { 11 12 static enum PagesRestrictions { 13 14 @ViewPattern("/admin*") 15 @RestrictAtPhase(PhaseIdType.RENDER_RESPONSE) 16 @LoginView("/login") 17 @AccessDeniedView("/denied") 18 @Admin 19 ADMIN; 20 21 } 22 23 }
  28. 28. Introduction JEE 6 Seam 3 JSF Conclusion PrettyFaces : URL Rewriting Le pretty-config.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <pretty-config xmlns="http://ocpsoft.com/prettyfaces/2.0.4" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://ocpsoft.com/prettyfaces/2.0.4 5 http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-2.0.4.xsd"> 6 7 <!−−========[ PAGE ]=====================================−−> 8 <url-mapping id="login"> 9 <pattern value="/login"></pattern> 10 <view-id>/login.xhtml</view-id> 11 </url-mapping> 12 13 </url-mapping> 14 </pretty-config>
  29. 29. Introduction JEE 6 Seam 3 JSF Conclusion PrettyFaces : URL Rewriting Contrˆoles avanc´es 1 <!−−========[ REWRITE ]======================================−−> 2 <rewrite match="^/([wd/-_]+)([.]{1}xhtml)$" substitute="/$1" redirect="301" /> 3 <rewrite match="^/(app/[wd-_]+[.]{1}xhtml[?]path=)([wd/-_]+)$" substitute="/app/$2" redirect="301" /> 4 5 <!−−========[ IDENTIFY ]===================================== −−> 6 <url-mapping id="logout"> 7 <pattern value="/logout" /> 8 <view-id>/login.xhtml</view-id> 9 <action>#{identity.logout}</action> 10 <action phaseId="RENDER_RESPONSE">#{redirect.redirectToHome}</action> 11 </url-mapping> 12 13 14 <!−−========[ APPLICATION SECTIONS ]========================= −−> 15 <url-mapping id="createDocument"> 16 <pattern value="/app/create/#{ docType }#{ /.*/ path:currentDocument.path }" /> 17 <view-id>#{redirect.createDocument}</view-id> 18 </url-mapping>
  30. 30. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2 Qu’est-ce que c’est ? Framework de pr´esentation orient´e composants Un ensemble de composants pour g´erer les vues Permet d’effectuer diff´erents types de rendus (Email, RSS, PDF, ...) Du XHTML En opposition avec JSP (et JSTL) Une interaction transparente avec les Web beans Les composants et vues ont des ´etats Des biblioth`eques tr`es riches en composants (Richfaces, Primefaces)
  31. 31. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: les nouveaut´es Quoi de neuf dans JSF 2 ? Page Description Language (Facelets) Composants Composite simplifi´es (ax´es sur de la convention) Une meilleure gestion des ressources De l’ajax en natif Gestion des param`etres GET Actions en GET Un ´enorme travail d’optimisation La normalisation des travaux de JBoss (Seam 2.x)
  32. 32. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Cycle de vie Le cycle de vie Cycle de vie de JSF
  33. 33. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Page Description Language Page HTML 5 1 <html> 2 <!−−============/ HEAD /============−−> 3 <head> 4 <title>project.name</title> 5 <meta charset="utf-8" /> 6 <link rel="stylesheet" href="default.css" type="text/css" /> 7 </head> 8 9 <!−−============/ BODY /============−−> 10 <body id="top"> 11 <div id="main"> 12 <!−− content −−> 13 </div> 14 15 <footer id="footer"> 16 <!−− footer content −−> 17 </footer> 18 </div> 19 </body> 20 </html>
  34. 34. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Page Description Language Templating Facelets 1 <f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" 2 xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" 3 dir="ltr" contentType="text/html" id="#{messages[’project.name’]}"> 4 5 <html> 6 <ui:remove><!−−============/ HEAD /============−−></ui:remove> 7 <h:head> 8 <title>#{messages[’project.name’]}</title> 9 <meta charset="utf-8" /> 10 <h:outputStylesheet name="default.css" library="stylesheet" /> 11 </h:head> 12 13 <ui:remove><!−−============/ BODY /============−−></ui:remove> 14 <h:body id="top"> 15 <div id="main"> 16 <ui:insert name="body" /> 17 </div> 18 19 <footer id="footer"> 20 <ui:include src="footer.xhtml"/> 21 </footer> 22 </div> 23 </h:body> 24 </html> 25 </f:view>
  35. 35. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Page Description Language H´eritage entre templates H´eritage de templates Facelets
  36. 36. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Composants Composites Cr´eation d’un composant composite 1 <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" 2 xmlns:h="http://java.sun.com/jsf/html" 3 xmlns:cc="http://java.sun.com/jsf/composite" 4 xmlns:f="http://java.sun.com/jsf/core"> 5 6 <ui:remove><!−−========| INTERFACE |========−−></ui:remove> 7 <cc:interface> 8 <cc:attribute name="id" required="true"/> 9 <cc:attribute name="title" required="true"/> 10 </cc:interface> 11 12 <ui:remove><!−−========| IMPLEMENTATION |========−−></ui:remove> 13 <cc:implementation> 14 <div id="#{cc.attrs.id}" class="panel"> 15 <div id="#{cc.attrs.id}_title"> 16 <span id="#{cc.attrs.id}_title_label">#{cc.attrs.title}<span> 17 </div> 18 </div> 19 20 <div id="#{cc.attrs.id}_content" class="panel_content"> 21 <ui:insert/> 22 </div> 23 </cc:implementation> 24 </ui:composition> /resources/project/panel.xhtml
  37. 37. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Composants Composites Utilisation d’un composant composite 1 <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" 2 xmlns:project="http://java.sun.com/jsf/composite/project" 3 template="layout/template.xhtml"> 4 5 <ui:define name="body"> 6 7 <project:panel id="myPanel" title="Hello my JSF component"> 8 <p> 9 This content will be include in my custom component. 10 </p> 11 </project:panel> 12 13 </ui:define> 14 </ui:composition>
  38. 38. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Param`etre en GET f:viewParam http://localhost:8080/foobar/product.xhtml?productId=42 1 <f:metadata> 2 <f:viewParam name="productId" value="#{bean.productId}"/> 3 </f:metadata> L’utilisation de PrettyFaces permet un contrˆole affin´e
  39. 39. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Ajax f:ajax 1 <h:form id="form"> 2 <h:panelGrid> 3 <h:inputText value="#{beanAction.text}" id="textDisplay"> 4 <f:ajax event="keyup" render="text" listener="#{beanAction.doSomething}"/> 5 </h:inputText> 6 <h:outputText id="text" value="#{beanAction.text}" /> 7 </h:panelGrid> 8 </h:form> Le support de l’ajax est natif en JSF 2. Mais moins puissant que l’utilisation de Richfaces ou de Primefaces
  40. 40. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Les biblioth`eques de composants Les diff´erentes biblioth`eques Richfaces : Soutenu par JBoss, tr`es utile pour l’Ajax et de la validation (JSR-303) Primefaces : L´eger, avec beaucoup de composants, et des diagrammes en HTML 5 Icefaces : Graphiquement riche mais gourmande en ressources. Apache MyFaces: Largement distanc´ee par Richfaces et Primefaces.
  41. 41. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Richefaces Utilisation de la JSR-303 : rich:validator 1 <!−− .... −−> 2 3 <!−−// Email ++++++++++++++++++++++ −−> 4 <h:outputText value="Email" /> 5 <h:inputText value="#{userBean.email}" id="email"> 6 <rich:validator /> 7 </h:inputText> 8 <rich:message for="email" /> 9 10 <!−− .... −−>
  42. 42. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Richefaces Ajax Simplifi´e : Ajax4JSF et JQuery 1 <h:form> 2 <a4j:commandButton id="updateActionButton" 3 action="#{beanAction.update}" 4 render="AjaxPanel" 5 value="update button" /> 6 7 <a4j:commandLink id="updateActionLink" 8 action="#{beanAction.update}" 9 render="AjaxPanel" 10 value="update link" /> 11 </h:form> 12 13 <a4j:outputPanel id="AjaxPanel" ajaxRendered="true"> 14 <h:outputText value="#{userBean.recordStatus}" id="out"/> 15 </a4j:outputPanel> 16 17 <rich:jQuery selector="#gallery img" event="mouseover" query="jQuery(this).stop().animate({width:’180px’})" />
  43. 43. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Richefaces Exemple de composants et de sites
  44. 44. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Richefaces Exemple de composants et de sites JBoss RHQ JOPR
  45. 45. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Richefaces Exemple de composants et de sites TinyPM
  46. 46. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Richefaces Exemple de composants et de sites SchoolManager.pl
  47. 47. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Primefaces Les diagrammes avec Primefaces 1 <h:panelGrid columns="2"> 2 <p:lineChart value="#{chartBean.linearModel}" legendPosition="e" zoom="true" animate="true" 3 title="Linear Chart" minY="0" maxY="10" style="width:400px;" widgetVar="chart"/> 4 5 <p:barChart id="basic" value="#{chartBean.categoryModel}" legendPosition="ne" 6 title="Basic Bar Chart" min="0" max="200" style="width:400px" animate="true"/> 7 </h:panelGrid>
  48. 48. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Primefaces Exemple de composants et de sites
  49. 49. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Primefaces Exemple de composants et de sites Musific
  50. 50. Introduction JEE 6 Seam 3 JSF Conclusion JSF 2: Primefaces Exemple de composants et de sites Kupon express
  51. 51. Introduction JEE 6 Seam 3 JSF Conclusion Conclusion Liens utiles http://www.seamframework.org http://www.jboss.org/richfaces/demos http://www.primefaces.org/showcase/ui/home.jsf Jug sur JEE 6 par Antonio Goncalves : http://www.parleys.com/#st=5&id=1754&sl=0 Jug sur Arqulian par Alexis Hassier : http://www.parleys.com/#st=5&id=3315&sl=0 http://www.youtestit.org http://palo-it.com/blog
  52. 52. Introduction JEE 6 Seam 3 JSF Conclusion Conclusion : Questions ? ou Trolls ?

×