Vous êtes sur la page 1sur 6

JSF 2.0 avec Netbeans 6.

8 et Glassfish v3
Par Mike Franois
J'ai ralis la traduction d'un article anglais de David Salter, auteur du livre Seam 2.x Web
Development, qui nous explique l'utilisation de JSF 2 avec Facelets et les Beans.
Vous pouvez lire l'article original ici.
JSF 2.0 avec Netbeans 6.8 et Glassfish v3 par Mike Franois
- 2 -
Copyright 2009 . 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' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://x-plode.developpez.com/articles/jsf2.0/
I - Introduction..............................................................................................................................................................3
II - JSF 2 : les Backing Beans.................................................................................................................................... 4
III - Messages du framework Bean Validation............................................................................................................ 5
IV - Messages de demande de localisation................................................................................................................ 5
V - Remerciements...................................................................................................................................................... 6
VI - Liens......................................................................................................................................................................6
JSF 2.0 avec Netbeans 6.8 et Glassfish v3 par Mike Franois
- 3 -
Copyright 2009 . 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' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://x-plode.developpez.com/articles/jsf2.0/
I - Introduction
En utilisant Netbeans 6.8 M1 et Glassfish v3, il est possible d'crire une application web Java EE 6. Dans cet article, je
vais vous montrer comment sont grs les beans et comment ils sont lis dans les pages avec le framework Facelets.
Je vais aussi vous montrer comment localiser l'application pour son utilisation avec des langues diffrentes. Enfin, je
vais vous montrer le framework de Bean Validations (JSR-303) pouvant ajouter de simples validations aux POJOs.
Pour montrer ces fonctions, j'ai crit un simple programme "Hello World .
Vous pouvez tlcharger le code source ici.
Cet article suppose que vous avez NetBeans 6.8M1 et GlassFish v3 install. Elle suppose aussi que vous avez une
comprhension des bases de JSF 1.x.
Anatomie d'une application JSF 2
En JSF 2, Facelets est la technologie de vue recommande par rapport JSP. Facelets permet l'insertion de balises
de marquage pouvant tre dfini comme le XML, ce qui donne l'avantage celui-ci de pouvoir tre automatiquement
analys par les IDE tels que NetBeans.
Je suppose que vous tes familier avec Facelets.
Toutefois, vous pouvez en savoir plus sur Facelets dans le livre "Seam 2.x Web Development".
Dans la classique application "Hello World", l'utilisateur est invit entrer son nom.
Il en est de mme dans notre application, avec le formulaire de saisie dfini comme suit:
<h:form id="helloForm">
<h:panelGrid columns="3">
<h:outputText value="#{msgs.whatIsName}"/>
<h:inputText id="name" value="#{helloBean.name}"/>
<h:message for="name" styleClass="error"/>
<h:commandButton action="#{helloBean.sayHello}" value="Hello"/>
</h:panelGrid>
</h:form>
A travers cette capture d'cran, on peut voir plusieurs choses:
Le texte de sortie ( "What is your name") est dfini par l'EL #{msgs.whatIsName}.
Cela nous permet de facilement internationaliser notre application (nous jeterons un rapide coup d'oeil sur
l'internationalisation).
JSF 2.0 avec Netbeans 6.8 et Glassfish v3 par Mike Franois
- 4 -
Copyright 2009 . 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' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://x-plode.developpez.com/articles/jsf2.0/
Le nom saisi est enregistr dans la proprit "name" du managed bean "helloBean".
<h:message/>
Nous avons utilis l'lment pour afficher un message d'erreur si le nom n'est pas valide. Ceci sera expos via le
Framework Bean Validation du managed bean.
L'appui sur le bouton invoque la mthode "sayHello" du Bean "helloBean".
II - JSF 2 : les Backing Beans
Pour les applications JSF 1, les backing beans ont t crits via des POJOs et ensuite ont t dclars JSF via
la configuration XML dans le fichier faces-config.xml. Avec JSF 2, les backing beans ou les managed beans sont
declars via des annotations Java 5. Pour dclarer un bean en tant que managed bean, nous avons simplement
besoin d'un bean dclar avec l'annotation @ManagedBean. Ainsi, pour rejoindre l'exemple prcdent, nous pouvons
crire un managed bean ainsi :
@ManagedBean(name="helloBean")
@RequestScoped
public class HelloBean {
@Pattern(regexp="(.+)", message="{constraint.invalid.name}")
private String name;
public HelloBean() {
}
public String sayHello() {
return "hi";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Vous pouvez voir que c'est un simple POJO, cependant, il existe plusieurs annotations:
@ManagedBean. Ceci est la dfinition d'un POJO gr comme un managed bean. Le bean en question est appel
"helloBean".
@RequestScope. Cette annotation dfinit que le bean demande une porte base sur la requte, ce qui signifie que
le bean sera instanci pour la dure de la requte HTTP.
@Pattern. Cette annotation est une partie du framework Bean Validation. Cette annotation prcise que le "nom" doit
tre conforme l'expression rgulire dfinie par regexp - (. +) C'est--dire dans le cas prsent, une chane non vide.
Si l'attribut de validation choue, le message dfini par la proprit "message" est affiche.
JSF 2.0 avec Netbeans 6.8 et Glassfish v3 par Mike Franois
- 5 -
Copyright 2009 . 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' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://x-plode.developpez.com/articles/jsf2.0/
Ce managed bean possde une proprit "nom", qui est lie la page Facelets en utilisant l'expression
#{helloBean.name}. Le managed bean a une methode, "sayHello", qui est appele partir de la page Facelets
via l'expression #{helloBean.sayHello} . Dans cet exemple d'application, en appuyant sur le bouton "sayHello", la
mthode retournera la chane" salut ". JSF utilise alors les rgles de la navigation dans le fichier faces-config.xml afin
de dterminer ce qui sera affich la page suivante. Il n'y a rien de diffrent partir d'une application JSF 1.
<navigation-rule>
<from-view-id>/main.xhtml</from-view-id>
<navigation-case>
<from-outcome>hi</from-outcome>
<to-view-id>/hello.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
Pour finir notre aperu des grandes lignes d'une application JSF 2, tout ce qui reste est de dfinir le fichier de
ressources pour l'application de localisation et les ressources ncessaires pour le framework Bean Validation.
III - Messages du framework Bean Validation
Le framework Bean Validation lit ses ressources localises partir d'un fichier appel
"ValidationMessages.properties" dans le package par dfaut de l'application Web. Ce fichier est un simple fichier de
proprits: constraint.invalid.name = "S'il vous plat, entrez un nom"
IV - Messages de demande de localisation
Les messages de l'application sont stocks dans un simple fichier de proprits. L'emplacement de ce fichier est
dfini dans le fichier faces-config.xml comme indiqu ci-dessous.
<application>
<resource-bundle>
<base-name>com.davidsalter.jsf2helloworld.messages</base-name>
<var>msgs</var>
JSF 2.0 avec Netbeans 6.8 et Glassfish v3 par Mike Franois
- 6 -
Copyright 2009 . 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' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://x-plode.developpez.com/articles/jsf2.0/
</resource-bundle>
</application>

Maintenant que nous avons vu comment une application JSF 2 est dveloppe, vous pouvez essayer d'excuter
l'application d'exemple pour voir par vous-mme. J'espre que cet article vous a donn un aperu de JSF 2, et qu'il
vous incitera dvelopper de nouvelles applications JSF 2.
V - Remerciements
Je tiens remercier David Salter pour l'autorisation de traduction et de publication de son article.
Tout autant, je remercie Romaintaz pour la relecture de cet article.
VI - Liens
Si vous voulez en savoir plus sur Facelets, vous pouvez consulter l'article de djo.mos.