JSF et les Facelets


Java Server Facelets



INTRODUCTION :


Facelets est un système templating puissant qui vous permet de définir des vues de JSF en utilisant des calibres du modèle HTML, Facelet réduit la quantité de code nécessaire pour intégrer des composants dans la vue, et n'exige pas des balises Web. Dans cet article, nous présenterons les Facelets, tout en expliquant certains de ses dispositifs, ainsi que son fonctionnement.


La communauté du Web cherche une Framework comme support, soutenue par JavaServer Faces comme norme standard. Tandis que JavaServer Faces et les JSP sont censés être alignés, Facelets sort des spécifications différentes de JSP et fournit une technologie fortement performant : JSF-centric. Quiconque crée une page JSP pourra faire la même chose avec Facelets et utilisation familière des balises XML. La différence est sous le capot où tout le fardeau du fournisseur API de JSP est enlevé pour augmenter considérablement JSF comme plateforme et fournir un développement plus aisé « plug-and-go » sans exiger le développement d'étiquette de JSP.

Les UIComponents de JavaServer Faces sont les premiers composants de classe dans Facelets ; il n'y a aucun besoin de développer les objets supplémentaires à intégrer. Il n'y a également aucun besoin d'apprendre encore un autre schéma de XML pour définir vos vues.


Voici un exemple montrant à quel point il est facile de définir une vue avec Facelets :


<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:h="http://java.sun.com/jsf/html"

xmlns:c="http://java.sun.com/jstl/core">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Hello</title>

</head>

<body>

<form id="helloForm" jsfc="h:form">

<h2>

Hi. My name is Duke. I'm thinking of a number from

#{UserNumberBean.minimum} to #{UserNumberBean.maximum}.

Can you guess it 

</h2>

<img id="waveImage" src="wave.med.gif" />

<input type="text" jsfc="h:inputText" id="userNo"

value="#{UserNumberBean.userNumber}"

validator="#{UserNumberBean.validate}"/>

<input type="submit" jsfc="h:commandButton" id="submit"

action="success" value="Submit" />

<p />

<h:message showSummary="true" id="errors1" for="userNo"/>

<p />

<c:forEach begin="1" end="4" varStatus="v">

#{view.viewId} #{v.index}<br/>

</c:forEach>

</form>


</body>

</html>




On peut penser en effet que les notations nous sont familier. Donc il n’y a aucun besoin d'apprendre une langue ou un schéma templating différente.



I.Pourquoi utiliser Facelets .


En premier lieu, Facelets ne dépend pas d'une balise de JSP. Ceci signifie que vous pouvez commencer à employer les nouveaux dispositifs de JSF 1.2 sans attendre une balise de JSP

En second lieu, Facelet est conçu pour un usage simplifié. Prenant de la base d’attributs de jwcid, Facelet utilise jsfc et ses propres Namespaces afin de pouvoir convertir les éléments HTML en éléments correspondant aux composants JSF. Dans l’exemple précédent, jsfc(JSF Compilation) est utilisé pour informer le compilateur de créer un composant de type h:inputText dans la vue.

Il n’est pas à oublier que Facelets est très léger. Beaucoup d’entres vous peuvent être familier aux capacités en tant que moteur de templating. Facelets a les mêmes capacités souhaitées et teste les vues JSF sans la balise Servlet. Le Framework est minimal et pratique pour un usage de production. Il permet également le déploiement de JSF en dehors de servlets, incluant Portlets.

Voici comment on crée un nouveau Facelet:

// grab our FaceletFactory and create a Facelet

FaceletFactory factory = FaceletFactory.getInstance();

Facelet f = factory.getFacelet(viewToRender.getViewId());


// populate UIViewRoot

f.apply(context, viewToRender);

La liste courte de dispositifs

Voici une liste courte du dispositif courant d’ensemble Facelet:

  • fonctionne avec JSF 1.1 et JSF 1.2, incluant le RI(Reference Implementation) de Sun et le MyFaces d’Apache

  • Pas de temps supplémentaire pour le développement des UIComponents

  • Template rapide/Décorateurs des composants et pages Web

  • Possibilité de spécifier l’arbre des UIComponents dans des fichiers différents

  • Rapport d’erreurs précisés pour les lignes/balises/attributs

  • Configuration des fichiers XML non nécessaires

  • Réserver les attributs ‘jsfc’ se comportant de la même manière que les bases ‘jwcid’


Example: ( <input id="bar" type="text" jsfc="h:inputText" value="#{foo.bar}"/>)

Design plugable facilitant le travail du concepteur Exemple :

transforme <input type="text"/> en <h:inputText/> à la compilation)

  • Ne requiert aucun RenderKits spécial ( RenderKit = outil chargé de la conversion des éléments d’un JTree)

  • Facelet ne dépend pas des balises Web

II.Pourquoi le succès des Facelets 


Tout le monde cherche à concevoir des pages Web plus aisément, et le processus de conception semble être la motivation des développeurs.

D’un autre point de vue, JSF est un standard pour beaucoup d’autres, mais JSF nécessite tout de même une portabilité de type ViewHandler Framework faisant des heureux dans le camp des développeurs et des Web designer.

Les développeurs sont souvent obliger de définir les UIComposants, les convertisseurs, validateurs dans le fichier config.xml, tandis que Facelets ne demande que la spécification du nom des alias afin d’importer leurs objets sur leurs pages Web (pas besoin de XML nécessairement).

La clé de Facelet est la simplicité des intégrations et du développement.

En conclusion, Facelet est une ardoise propre pour corriger des soucis avec JSF.

Le Templating, réutilisable, et la facilité du développement sont de premières priorités qui aideront à apporter les développeurs au bout de leurs initiatives avec JSF comme plateforme appropriée pour des projets à grande échelle.




Retrouvez ci-dessous les autres sections du Laboratoire Sun
Evènements
Java Sun Net Talk LIVE CHAT le 2 Avril à 16h303/29/08
SolarisSunDécouvrez les nouveaux Sun Fire sous Intel10/11/07
JavaValtech Days10/9/07
JavaApacheCon du 1 au 4 mai à Amsterdam2/13/07

Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Actualités
SunSun Microsystems en forme !8/4/08
SunOpenDS un ldap 100% java7/24/08
SunSun et Fujitsu annoncent un nouveau Sparc647/16/08
SunVisualVM, un outil de surveillance des applications Java7/10/08
SunSun, Microsoft et Cisco contre le DNS Cache Poisoning7/9/08

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée