Академический Документы
Профессиональный Документы
Культура Документы
Cet article a pour objectif de vous prsenter la technologie de prsentation Facelets ainsi que de vous guider dans les tches de configuration et d'utilisation de cette technologie.
I - Prsentation de Facelets II - La configuration III - La cration de vues avec facelets IV - Le templating V - La cration de composants V-A - Crer la page xhtml du composant V-B - Cration du taglib.xml V-C - Dclaration dans web.xml V-D - Utilisation du composant V-E - Remarques VI - Autre fonctionnalits de Facelets VI-A - Dbogage VI-B - Inclusion VI-C - Rptition VI-D - Autres VII - Conclusion VIII - Remerciements
-2Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
I - Prsentation de Facelets
Comme JSP, Facelets est une technologie de prsentation pour le dveloppement d'applications web en Java.
Une page JSP est transforme en une Servlet qui possde un cycle de vie diffrent de celui de JSF, ce qui peut tre source de confusion et de problmes. A l'inverse, Facelets est spcifiquement dvelopp pour JSF et est plus performant et lger. Facelets introduit aussi des fonctionnalits au-del de celles offertes par le JSP, comme par exemple un systme de templating ou encore la possibilit de crer des composants personnaliss sans crire la moindre ligne de code Java.
-3Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
xhtml.
Notez cependant que les pages xhtml doivent toujours tres rfrences par le suffixe ".jsf" ou encore le prfixe "faces/" dans les liens pour qu'elles soient traites par la FacesServlet. Ajouter FaceletesViewHandler dans faces-config.xml : Il s'agit d'indiquer JSF d'utiliser Facelets comme gestionnaire de vues : "View Handler". Un "View Handler" est un plugin JSF qui traite les deux phases "rendu rponse" et "restaurer vue". Pour ce faire, il suffit d'ajouter l'lment <view-handler> dans faces-config.xml, le fichier de configuration de JSF. LIST. 2 - Configuration de faces-config.xml
<faces-config> : <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> </application> </faces-config>
-4Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
Cette page se contente d'afficher le message "Hello World" mais elle met en valeur les bases du xhtml. Notez surtout la faon dont on importe une bibliothque de composants dans facelets, avec l'attribut xmlns dans la balise html. Par exemple, cette page importe xmlns:f="http://java.sun.com/jsf/core" le jeu de composants "core" avec le prfixe f avec
Bien que cette page n'utilise aucun des composants de facelets, elle sera traite et transforme par Facelets du moment qu'elle porte l'extension xhtml (cf LIST. 1). Pour le reste, on travaille comme dans une JSP, mais n'oubliez pas de respecter rigoureusement la norme xml.
-5Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
IV - Le templating
Le templating consiste factoriser la structure commune d'un ensemble de pages et l'extraire dans une nouvelle page, appele template ou modle. Les autres pages utilisent alors le template comme structure et y injectent leur contenu spcifique.
Pour illustrer le concept du templating, nous allons partir d'un exemple concret. Considrons un ensemble de pages du site www.developpez.com :
A partir de ces deux pages, on peut extraire la structure globale d'une page dans le site de Developpez.com qui est reprsente dans la figure FIG. 3.
-7Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
Seul l'en-tte est commun toutes les pages. Le menu secondaire et le contenu sont spcifiques la page courante. On peut donc construire ce template avec facelets comme ceci :
-8Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
Dans facelets, un template est une page xhtml ordinaire qui dfinit la structure du document avec des emplacements spcifiques o les pages qui utilisent ce template (pages clientes) insreront leur contenu. Pour dfinir un tel emplacement, on utilise le tag <ui :insert> avec comme paramtre le nom logique de cet emplacement : en-tte, menu, etc. Le tag <ui :insert> comme tous les autres tags prfixs par " ui " sont fournis par facelets. En gnral, le tag <ui:insert> a un corps vide puisqu'il sera remplac par le contenu fourni par la page cliente. Si par contre ce corps n'est pas vide, alors son contenu sera affich lorsque la page cliente ne spcifie pas son propre contenu. Par exemple, dans le template prcdent, on a dfini un message dans l'emplacement rserv l'en-tte qui sera affich si les pages clientes ne spcifient pas leur propre en-tte. Une fois le template dfini, les pages peuvent l'utiliser de cette faon : LIST. 5 - La page cliente java-faq.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <ui:composition template="/template.xhtml"> <ui:define name="titre">FAQ Java</ui:define> <ui:define name="entete"> <h:outputText value="Entete Java" > </ui:define> <ui:define name="menu"> <h:outputText value="FAQ" > <h:outputText value="Tutoriels" > <h:outputText value="Forums" > </ui:define>
-9Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
On commence par spcifier que l'on utilise un template avec la balise <ui:composition> qui prend comme paramtre le chemin vers le fichier contenant le template. Pour dfinir les diffrents blocs qui seront injects dans le template, on utilise la balise <ui:define>. Cette balise prend comme paramtre le nom logique du bloc correspondant dans le template et contient dans son corps le contenu injecter dans le template. Notez l'absence des balises <head> et <body> du moment qu'elles sont dfinies dans le template. Par exemple, lors de l'affichage de faq-java.xhtml, facelets effectue les oprations suivantes sur template.xhtml : Remplace <ui:insert name= "title"> par le "FAQ Java". Remplace <ui:insert name= "entete"> par le "Entete Java". Remplace <ui:insert name= "menu"> par le "FAQ Tutoriels Forums". Remplace <ui:insert name= "contenu"> par le "Les FAQs Java".
Notez que le rsultat ne contient que des balises standards html comprhensibles pour le navigateur et que toutes les balises spcifiques facelets ont t interprtes et n'apparaissent plus dans le rsultat. Il est parfois intressant de pouvoir passer des paramtres de la page cliente au template qu'elle utilise. Ceci peut se faire avec le tag <ui:param> qui prend en paramtre le nom du paramtre et sa valeur. Le paramtre en question est alors accessible dans le template avec la syntaxe des JSF EL (Expression Language), c'est dire avec l'expression #{nomDuParametre}. Exemples : Dans la page cliente
<ui:composition template="/template.xhtml">
- 10 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
Dans le template
<h:outputText value="#{active}"/>
- 11 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
V - La cration de composants
Facelets permet de dvelopper des composants JSF personnels et ce sans avoir crire la moindre ligne de code en Java. Ceci se fait en ralisant des compositions de composants existants.
Les paramtres #{titre} et #{valeur} seront passs en paramtre lors de l'appel de ce composant. Vous tes libre de choisir les noms des paramtres lors de la dfinition du composant. Les fichiers de dfinition des composants vont gnralement dans un sous dossier de WEB-INF. Dans cet exemple, on suppose que le fichier dfinissant ce composant (zoneDeTexte.xhtml) est situ dans WEB-INF/composants.
- 12 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
Comme le montre ce fichier (LIST. 8), le namespace est indiqu dans l'lment <namespace>, et pour chaque composant dans le jeu de composants, on ajoute un lment <tag> avec le nom du composant et le fichier xhtml qui contient sa dfinition. Le fichier taglib.xml doit tre dans ou dans un sous dossier de WEB-INF. Dans ce cas, on suppose qu'il est situ dans WEB-INF.
Pour spcifier plusieurs fichiers taglib.xml, il faut le faire dans un seul <context-param> en sparant les noms des fichiers par un ";". Si le ou les fichiers taglib.xml en question sont dans un fichier jar qui se trouve dans le dossier WEB-INF/lib de l'application, alors il n'est plus ncessaire de les dclarer dans le web.xml.
Veuillez noter comment on spcifie les paramtres d'un composant : on utilise des attributs ayant le mme nom que ceux des paramtres utiliss dans la dfinition du composant.
- 13 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
Pour pouvoir passer un composant un bloc (un ou plusieurs composants) au lieu d'une valeur simple, on spcifie o ce bloc sera insr dans le composant avec le tag <ui:insert/> sans paramtre et on dclare ce bloc comme corps du tag du composant. Par exemple : LIST. 11 - Composant qui accepte un bloc comme corps.
<ui:composition> <h:panelGrid columns="1" width="100%" border="1"> <f:facet name="header"> <h:outputText value="#{titre}"></h:outputText> </f:facet> <ui:insert /> <!-- C'est ici que se fera l'insertion -> </h:panelGrid> </ui:composition>
V-E - Remarques
La mthode prsente ici, bien qu'elle permet de mettre en place rapidement et facilement des composants rutilisables, souffre nanmoins de quelques limitations comme par exemple le fait qu'elle ne permet que de composer des composants dj existants et non pas la cration d'autres totalement nouveaux.
- 14 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
VI-B - Inclusion
Il est possible d'inclure d'autres pages xhtml dans un document facelets via le composant <ui:include src="chemin" />
VI-C - Rptition
Facelets offre un composant capable d'itrer sur une liste ou un tableau, tout comme le for de composant <ui:repeat value="liste" var="un nom" /> JSTL, qui est le
VI-D - Autres
Facelets offre quelques variantes <ui:composition /> qui sont : component: similaire composition mais ajoute un UIComponent l'arbre des composants JSF. decorate: similaire composition mais garde aussi le contenu qui l'entoure. fragment: c'est component ce qu'est decorate composition.
- 15 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
VII - Conclusion
Pour conclure, j'espre que cet article vous a t utile et que facelets vous permettra d'augmenter votre productivit en utilisant les fonctionnalits qu'il offre comme le templating ou la cration de composants. Pour un complment d'informations, je vous invite consulter la documentation officielle de facelets disponible ici : https://facelets.dev.java.net/nonav/docs/dev/docbook.html
- 16 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
VIII - Remerciements
Mes remerciements vont : Ricky81 pour ses encouragements Romaintaz pour sa relecture Keulkeul pour sa relecture RideKick pour sa relecture Elitost pour sa relecture
- 17 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/
- 18 Les sources prsents sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2007 - djo.mos. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://djo-mos.developpez.com/tutoriels/java/jsf/facelets-intro/