Guide pas à pas de l'utilisation de JBoss tools pour le développement JSF
Date de publication : 30/10/08 , Date de mise à jour : 12/11/08
Par
Lotfi Mellouk
Cet article présente l'utilisation de JBoss tools pour faciliter et industrialiser le développement d'applications web avec JSF
I. Introduction
I-A. Présentation de JBoss Tools
I-A-1. Installation de JBoss tools
I-A-1-a. Compatibilités système
I-A-1-b. Installation
II. Présentation des outils JBoss tools pour JSF
II-A. La perspective Web development
II-B. La palette JBoss tools
II-C. Editeur Graphique
II-D. Vue du fichier de configuration de JSF
II-E. Assistant du contenu du code source
II-F. Vérificateur et reporteur d'erreur
II-G. Autres éditeurs
II-H. Présentation des nouveautés de la version 3.0 de JBoss tools
III. Guide de création d'un nouveau projet JSF
III-A. Création d'un nouveau projet
III-B. Première page JSF
III-C. Ajouter un managedBean
III-D. Ajouter une règle de navigation
III-E. Importer un projet existant
III-F. Utilisation avec un projet déjà présent dans le workspace
III-G. Créer un Converter
III-H. Créer un Validator
IV. Customiser l'utilisation de JBoss Tools
IV-A. Créer son propre template de projet
IV-B. Ajouter une librairie de tag
IV-C. Créer son propre template de page
IV-D. Support de Facelets
I. Introduction
I-A. Présentation de JBoss Tools
JBoss tools est un ensemble de plugins Eclipse pour le développement J2EE, il inclut les produits suivant:
- Exadel Studio Product : passé sous le giron de JBoss pour le développement JSF,
- Hibernate tools : permet de générer les fichier de mapping hibernate ainsi que les classes DAO en se connectant à la source de données,
- JBoss jBPM tools : fournit les outils pour modéliser , exécuter, et monitorer les processus métier. De plus, il permet de faciliter le développement de services web WSDL et des processus métier avec jPDL(jBPM Process Definition Language) et BPEL (Business Process Execution Language)
- Drools IDE : pour le développement des règles métier pour le moteur de règles métier Drools
- JBoss Application Server tools : pour la gestion du serveur d'application JBoss
- JBoss Seam tools : pour l'utilisation du framework JBoss Seam
JBoss tools supporte nativement les environnements: JSF-RI, MyFaces, Richfaces, JBoss Seam, Facelets, Shale.
JBoss tools est donc un outil puissant qui fait partie des meilleurs outils open source pour le développement JSF.
I-A-1. Installation de JBoss tools
I-A-1-a. Compatibilités système
- Java: Java 5.0 ou plus
- Système d'exploitation: Window, Linux.
- Plug-ins: JBoss tools contient tous les plugins nécessaires à son utilisation, l'installation vient avec les plugings suivants:
- WTP runtime
- GEF runtime
- JEM runtime
- EMF & SDO runtime
- XSD runtime
I-A-1-b. Installation
JBoss tools est proposé en téléchargement sur le site
suivant, il est possible d'installer seulement le module de développement JSF, ou de prendre tout le package JBoss tools.
Pour installer le plugin, il suffit de télécharger l'archive et la dézipper dans le dossier d'installation de Eclipse.
|
Il est important de vérifier la compatibilité de la version de JBoss tools avec la version d'Eclipse.
|
Pour vérifier l'installation sélectionnez Window/Open Perspective/Other/Web development
II. Présentation des outils JBoss tools pour JSF
II-A. La perspective Web development
La perspective web development contient le plan de travail pour un projet web. Pour ouvrir cette perspective : Window/Open perspective/Web development
II-B. La palette JBoss tools
La palette JBoss tools rassemble les librairies de tags JSF, Richfaces, Facelets et JBoss seam, il est possible d'ajouter d'autres librairies à la palette.
II-C. Editeur Graphique
Un éditeur pour pages JSF de type WYSIWYG est disponible pour aider au développement.
II-D. Vue du fichier de configuration de JSF
JBoss toos fournit un puissant éditeur du fichier de configuration faces-config.xml, il contient trois modes:
- Diagram
Visialise le workflow de navigation
- Tree
Contient tous les éléments du faces-config avec la possibilité de réaliser les opérations d'ajout/suppression/modification de chaque élément
- Source
Le code source du faces-config.
II-E. Assistant du contenu du code source
Dans tous les éditeurs du code source, un assistant est disponible. Il est lancé lorsqu'on commence à écrire, sinon, on peut le solliciter en utilisant CTRL-ESPACE. Voici un exemple dans le code source du web.xml, comme ce qui est proposé en natif dans WTP.
II-F. Vérificateur et reporteur d'erreur
JBoss tools permet de détecter les erreurs dans le faces-config, le web.xml ou les pages JSP. Il permet également de détécter les classes mal définies, une property d'un bean qui n'a pas de getter, ou une erreur de parsing des fichiers XML.
Il est possible de définir les niveaux de vérification de JBoss tools, dans Window/Preferences/JBoss Tools/Web, Verification.
Il est possible également de faire une vérification explicite en faisant un clic-droit sur un projet JBoss Tools JSF et en séléctionnant ensuite verify :
II-G. Autres éditeurs
D'autres éditeurs très intéressants sont fournis avec JBoss Tools comme :
- Editeur XML
- Editeur Graphique de Properties
- Editeur Graphique de TLD
- Editeur Graphique de fichier de description de l'application Web (web.xml)
- Editeur CSS
- Editeur JavaScript
- Visualiseur d'Image
- Editeur XSD
- Editeur WSDL
II-H. Présentation des nouveautés de la version 3.0 de JBoss tools
JBoss Tools 3 est disponible depuis le 31 octobre 2008 en version Beta, cette version est la première compatible avec Eclipse 3.4/Ganymede, pour l'installer, il suffit d'ajouter le site des versions en cours développement au gestionnaire de mise à jour d'Eclipse, ou la télécharger manuellement à
l'adresse suivante.
En ce qui concerne le développement JSF, les nouveautés concerne essentiellement l'éditeur visuel.
Les problèmes rencontrés avec la version 2 sont pour la plupart corrigés. Parmi les nouvelles caractéristiques de la version 3.0, on peut citer :
- Amélioration de la rapidité de l'éditeur visuel.
Il est maintenant possible d'écrire directement et aisément dans l'éditeur visuel.
- Editeur de classe CSS: un nouvel assistant de classe CSS est proposé, pour l'utiliser:
- Faire un clic droit sur le composant dans l'éditeur visuel et sélectionner ses attributs.
- Choisir l'attribut styleClass, ensuite, cliquer sur le bouton d'aide à la saisie qui s'affiche sur la droite.
- Choisir le fichier CSS, une classe de style à modifier, ou créer une nouvelle .
L'assistant CSS peut être solliciter dans l'attribut styleClass d'un composant sélectionné dans la palette ou directement :
File/
New/
CSS class ou
File/
New/
Other.
- Amélioration de l'assistant de code JSF:
Les problèmes rencontrés dans l'ancienne version sont en cours de correction, comme, la proposition de composants JSF à l'intérieur de l'attribut jsfc de Facelets
- Affichage des tags non visuel:
L'éditeur propose l'affichage de composants non visuels :
Lorsque cet affichage est choisi, les composants non visuels sont affichés ce qui permet au développeur de les localiser facilement et les sélectionner avec un simple clic.
- Affichage des messages issus du fichier de ressources:
les dernières versions de JBoss tools ne permettaient pas de visualiser la valeur des clés de fichiers de ressources, alors que cette possibilité existait dans l'ancienne version du produit tenu par Exadel. Ce problème est corrigé dans la version 3.
- Support de l'ouverture de fichiers inclus à l'aide des tags a4j:include et rich:insert, comme pour le tag Facelets ui:include, l'assistant permet d'accéder directement au fichiers inclus à l'aide de l'attribut src par l'utilisation de la touche F3 ou de CTRL+ clic.
- Support de la complétion pour d'avantage de tags JSF notamment les tags JSF core.
- La palette change de look et contient de nouvelles icones pour la librairie ajax4jsf et Richfaces.
- Support des nouveaux tags Richfaces par l'editeur visuel: rich:hotKey, rich:ajaxValidator, rich:graphValidator, rich:beanValidator, rich:extendedDataTable.
- Support des nouveaux tags JSF 2: h:body, h:head, h:outputscript, h:outputstyle
On peut regretter néanmoins une régression de l'éditeur de code JSF lors du passage de la version d'Exadel compatible avec Eclipse 3.2 au nouvelles versions JBoss tools, certains bugs ne sont toujours pas corrigés dans la version 3.0. Par exemple, dans la saisie des tags JSF ou Richfaces, l'éditeur ne filtre pas les valeurs disponibles dans l'expression EL.
III. Guide de création d'un nouveau projet JSF
III-A. Création d'un nouveau projet
Nous allons utiliser l'assistant de création d'un nouveau projet JSF:
Clic droit sur la vue
Web project, puis, séléctionner
Create New JSF project :
Ajouter le nom du projet, l'environnement JSF et le template. Nous allons choisir l'implémentation JSF 1.1 avec les librairies.
L'assistant nous propose le choix de la version de l'implémentation JSF : JSF 1.1 ou 1.2 ainsi que myfaces 1.1.4.
La template est le type de gabarit du projet crée, les templates proposées sont :
JSFBlank: Création d'un projet web standard avec les capacités JSF
JSFKickStart: Création d'un projet JSF standard avec un exemple prêt à l'emploi.
With/Without Libs: Les deux templates sont disponibles avec une version qui inclut les librairies JSF dans le dossier WEB-INF/libs WithLibs et une autre sans les librairies JSF withoutLibs.
Il est néanmoins possible d'ajouter son propre template. Lien à ajouter
Déclarer la version de l'api des servlet et le serveur de déploiement:
Le projet JSF est créé avec les librairies nécessaires, nous allons maintenant créer une nouvelle page JSF.
III-B. Première page JSF
Création d'un nouveau fichier JSP:
On fait un clic droit sur le dossier WebContent, New, File, et on choisi JSP file.
Choix de template:
L'assistant nous propose de définir le template de page, les templates proposés sont:
Blank: Une page JSP vide
JSFBasePage: Page JSF avec la saisie des librairies de tags à utiliser:
JSPRedirect: Une page de redirection.
Il est possible de créer sa propre page de template. Lien ci-dessous.
Nous allons choisir JSFBasePage, et nous sélectionnerons ensuite les tags utilisés dans la page, JSF core et JSF HTML. Notre page contient donc:
JSFBasePage |
< % @ taglib uri = " http://java.sun.com/jsf/html " prefix = " h " % >
< % @ taglib uri = " http://java.sun.com/jsf/core " prefix = " f " % >
< html >
< head >
< title > < / title >
< / head >
< body >
< f : view >
< / f : view >
< / body >
< / html >
|
Nous souhaitons maintenant afficher un message sur la page, nous pouvons procéder de deux manières :
En utilisant la palette: utiliser la palette Jbos Tools, on sélectionne JSF HTML dans la palette, et on fait un clic sur outputText
En utilisant l'éditeur: Il suffit de commencer d'écrire 'h:out' et l'éditeur propose la liste des composants qui correspondent aux premières lettres tapées.
Deployer l'application:
Pour déployer notre application,on l'ajoute dans les modules web dans la perspective J2EE/Server, ou on clique droit sur le projet et on fait
Run on Server. Le démarrage et l'arrêt du serveur peut se faire à l'aide de:
Le résultat:
III-C. Ajouter un managedBean
Nous allons utiliser l'éditeur du fichier de configuration de JSF pour ajouter un nouveau managedBean.
Ouvrir le fichier faces-config.xml qui se trouve dans : le dossier configuration
Aller dans l'onglet
Tree, et clic droit sur ManagedBeans et faire
New ManagedBean
Saisir les paramètres du managedBean : l'assistant de création du managedBean nous propose de saisir le scope, la classe et le nom du managedBean, on coche generate Source Code, la classe sera générée dans le package défini.
Ajouter des properties: Nous allons maintenant ajouter les properties du bean, en cliquant sur le bouton
Add dans l'éditeur du mangedBean
Si on ne connait pas le package exact de la classe, utiliser l'assistant en cliquant sur CTRL-ESPACE
III-D. Ajouter une règle de navigation
Nous allons créer la navigation entre la page login.jsp et index.jsp. Passons maintenant sur l'onglet Diagram de l'éditeur du faces-config
Clic droit dans l'éditeur, New View
On ajoute une page JSFBasedPage login.jsp
Dans le diagramme, on réalise un clic sur l'icône create New connection
On lie index.jsp à login.jsp
Il est possible de modifier le cas de navigation en double cliquant sur la connection
Ajouter une action dans la page login.jsp
< h : form >
< h : panelGrid columns = " 2 " cellspacing = " 5 " cellpadding = " 5 " >
< h : outputText value = " Login " / >
< h : inputText value = " #{compte.login} " / >
< h : outputText value = " Mot de passe " / >
< h : inputSecret value = " #{compte.password} " / >
< / h : panelGrid >
< h : commandLink value = " #{compte.connect} " > < / h : commandLink >
< / h : form >
< / f : view >
|
Nous pouvons accéder directement à la propriété du bean en cliquant sur CTRL + lien sur la property
Ajouter la fonction de contrôle,dans la classe Compte en ajoutant la fonction connect:
public String connect (){
return " index " ;
}
|
Tester la navigation : nous avons créé un seul cas de navigation, en cliquant sur bouton Login, nous passons à page index.jsp.
Ajouter un cas de navigation : pour ajouter un autre cas de navigation, on ouvre l'éditeur de faces config et l'onglet
Tree. Il est alors possible de créer une règle de navigation ou d'ajouter un cas de navigation à une règle existante.
III-E. Importer un projet existant
Si l'on souhaite utiliser JBoss tools avec un projet existant, un assistant d'import de projets est disponible dans la vue WebProject.
Cliquer droit dans la vue Web Project, ou utiliser le bouton import:
L'assistant nous demande l'endroit ou se situe le web.xml du projet à importer, ensuite, on saisit le nom du projet, les dossiers sources et le serveur de déploiement
III-F. Utilisation avec un projet déjà présent dans le workspace
Pour utiliser JBoss Tools avec un projet JSF qui existe déjà dans le workspace, il faut lui ajouter des capacités JSF:
JSF capabilities. Pour cela, il faut faire un clic droit sur le projet en question puis séléctionner
JBoss tools/
add JSF capabilities :
Ensuite nous donnons l'adresse du web.xml et les dossiers web/sources ainsi que le serveur de déploiement comme pour l'import de projet.
III-G. Créer un Converter
- Editer le faces config, puis, passer dans l'onglet Tree
- Sélectionner Converters et cliquer sur Add ou par un clic droit sur Converters et ensuite New/Converter with Id
- Cliquer sur le lien Converter-Class pour créer la classe
Si on clique sur Finish avant de créer la classe, une croix rouge apparait dans la déclaration du converter, on peut cliquer sur Converter-Class pour le créer
On Crée la classe qui implémente l'interface javax.faces.convert.Converter
- Ajouter le code de conversion
On peut maintenant définir la logique métier de notre Converter
III-H. Créer un Validator
De la même manière on peut créer un validator personnalisé en utilisant l'assistant
IV. Customiser l'utilisation de JBoss Tools
IV-A. Créer son propre template de projet
JBoss tools dispose d'un système de templates pour créer les nouveaux projets web. Il est parfois utile de définir son propre template, comme celui de Maven par exemple. Pour cela :
- Création du Template
Dans l'explorateur de projet, clic droit sur le projet et sélectionner JBoss Tools JSF et Save As Template
- Ajouter l'implémentation
- Ajouter les préférences
On choisit les dossiers et/ou librairies à ajouter dans le template.
- Choix des Templates Velocity
JBoss tools prend en charge les template Velocity, il n'est pas obligatoire d'ajouter un fichier pour velocity, le template sera crée en cliquant sur Finish.
Pour en savoir plus sur Velocity, consultez le site Apache Velocity
Maintenant, le template de projet est enregistré, nous pouvons l'utiliser dans la création ou l'import de nouveau projets
IV-B. Ajouter une librairie de tag
Il est possible d'ajouter d'autres librairies de tags autres que JSF et Richfaces, nous allons voir comment ajouter les librairies de
Rcfaces .
- Ajouter les tags Rcfaces ou le jar qui les contient dans le projet
- Utiliser le bouton import dans la palette
- Sélection du fichier TLD
L'assistant de création de tag nous propose de sélectionner le fichier TLD
- Choix des Tags
L'assistant propose la liste des tags disponibles. Si la librairie n'est pas dans la liste, il faut vérifier que le projet contient bien le fichier TLD. Parfois, il sera nécessaire de redémarrer Eclipse.
- Ajouter un nouveau groupe de librairies
On ajoute la librairie à un nouveau Groupe créé en cochant create New Group, en cliquant sur ok. On termine ainsi l'ajout de la nouvelle librairie.
On peut également ajouter une nouvelle librairie de Tag, à l'aide d'un glisser-déposer du fichier TLD de la vue WebProjects dans la palette JBoss Tools, l'assistant apparaissant comme avec le bouton import.
IV-C. Créer son propre template de page
Lorsque on ajoute une nouvelle page JSP, nous pouvons utiliser un template de page existant au lieu de créer une page vide. Nous allons voir comment définir notre une page template xhtml qui utilise Facelets.
- Sauvegarder la page en tant que Template
Pour le faire, on doit se positionner dans la vue Web Project, on clic droit sur la page en question et on séléctionne Save as Template
- Définir le nom du template
Nous pouvons créer une page de Template dans les préférences Eclipse.
- Ouvrir les préférences Eclipse
Windows/Preferences
- Sélectionner JSF Page dans la rubrique JBoss tools
- Séléctionner le fichier JSP
Sélectionner le fichier en faisant un clic sur Browse...
Pour créer un nouveau fichier avec notre template de page, on choisit le template MyFaceletsPage lors de la création d'un nouvaeu fichier xhtml.
IV-D. Support de Facelets
JBoss tools propose nativement l'utilisation de Facelets, plusieurs outils sont à disposition développeur:
- Capacités Facelets
Nous pouvons ajouter Facelets à un projet JSF en ajoutant Facelets Capabilities, pour cela:
Clic droit sur le projet, JBoss Tools/add custom Capabilities...
Ensuite on choisit Facelets
- Assistant de création d'un projet web.
L'assistant de création de projet dispose nativement d'un template pour un projet Facelets avec l'implémentation JSF
- Assistant de création d'une page xhtml
L'assistant de création d'une page xhtml dispose nativement d'un template de page Facelets
- Outils de la Palette
La palette JBoss Tools dispose de tous les composants Facelets
- Assistant de code
L'assistant de code propose aussi l'aide pour l'utilisation de l'attribut jsfc ainsi que les tags de Facelets, l'assitant devrait proposer tous les tags JSF à l'interieur de jsfc comme le proposait l'ancienne version avec Exadel Studio. Ce bug est en cours de correction il sera corrigé dans les prochaines versions.
- Editeur visuel
L'editeur visuel prend en charge les Facelets et affiche la page en tenant compte des templates utilisés.
Copyright © 2008 Lotfi MELLOUK.
Aucune reproduction, même partielle, ne peut être faite
de ce site ni 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 intérêts.