Guide pas à pas de l'utilisation de JBoss tools pour le développement JSF

Lotfi Mellouk

Cet article présente l'utilisation de JBoss tools pour faciliter et industrialiser le développement d'applications web avec JSF

- Titre : Guide pas à pas de l'utilisation de JBoss tools pour le développement JSF

- Auteur : Lotfi Mellouk

- Parution : 17 décembre 2008

- Mise à jour : 16 février 2020

- Licence : Copyright ® 2008 Lotfi MELLOUK. Aucune reproduction, même 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 intérêts.

Sommaire

- 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. Éditeur graphique

- II-D. Vue du fichier de configuration de JSF

- II-E. Assistant du contenu du code source

- II-F. Vérificateur et rapporteur 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 bibliothèque de tags

- IV-C. Créer son propre template de page

- IV-D. Support de Facelets

- V. Remerciements

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 suivants :

- Exadel Studio Product : plug-in Eclipse pour le développement web, passé sous le giron de JBoss pour enrichir JBoss tools ;

- Hibernate tools : permet de générer les fichiers 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 plugins 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 web et JSF, ou de prendre tout le package JBoss tools.
Pour installer le plugin, il suffit de télécharger l'archive et de la dézipper dans le dossier d'installation d'Eclipse.

Il est important de vérifier la compatibilité de la version de JBoss tools avec la version d'Eclipse.

Pour l'installation à l'aide du site de mise à jour d'Eclipse : sélectionnez Help/Software updates/Add Site.
Ajoutez le lien suivant pour la version stable : http://download.jboss.org/jbosstools/updates/stable
Pour la version de développement, utile pour la dernière version d'Eclipse : http://download.jboss.org/jbosstools/updates/development

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 bibliothèques de tags JSF, Richfaces, Facelets et JBoss seam, il est possible d'ajouter d'autres bibliothèques à la palette.

II-C - Éditeur 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 rapporteur 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étecter 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électionnant ensuite verify :

II-G - Autres éditeurs

D'autres éditeurs très intéressants sont fournis avec JBoss Tools comme :

- Éditeur XML ;

- Éditeur graphique de Properties ;

- Éditeur graphique de TLD ;

- Éditeur graphique de fichier de description de l'application Web (web.xml) ;

- Éditeur CSS ;

- Éditeur JavaScript ;

- Visualiseur d'Image ;

- Éditeur XSD ;

- Éditeur 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 Bêta, 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 de 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 concernent 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 ;

- Éditeur de classe CSS : un nouvel assistant de classe CSS est proposé, pour l'utiliser :

1. Faire un clic droit sur le composant dans l'éditeur visuel et sélectionner ses attributs.

2. Choisir l'attribut styleClass, ensuite, cliquer sur le bouton d'aide à la saisie qui s'affiche sur la droite.

3. Choisir le fichier CSS, une classe de style à modifier, ou créer une nouvelle

L'assistant CSS peut être sollicité 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 visuels :
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 fichier inclus à l'aide de l'attribut src par l'utilisation de la touche F3 ou de CTRL+ clic.

- Support de la complétion pour davantage de tags JSF notamment les tags JSF core.

- La palette change de look et contient de nouvelles icônes pour la bibliothèque ajax4jsf et Richfaces.

- Support des nouveaux tags Richfaces par l'éditeur 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 aux 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électionner 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 bibliothèques.

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.

Le template est le type de gabarit du projet créé, les templates proposés 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 bibliothèques JSF dans le dossier WEB-INF/libs WithLibs et une autre sans les bibliothèques JSF withoutLibs. Il est néanmoins possible d'ajouter son propre template.

Déclarer la version de l'api des servlets et le serveur de déploiement :

Le projet JSF est créé avec les bibliothèques 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 choisit 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 bibliothèques de tags à utiliser ;
JSPRedirect : une page de redirection.

Il est possible de créer sa propre page de template.

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 à écrire 'h:out' et l'éditeur propose la liste des composants qui correspondent aux premières lettres tapées.

déployer 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 peuvent 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 managedBean.

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 connexion.

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 le 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 où se situe le web.xml du projet à importer, ensuite, on saisit le nom du projet, les dossiers source 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électionner 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

1. Éditer le faces config, puis, passer dans l'onglet Tree.

2. Sélectionner Converters et cliquer sur Add ou par un clic droit sur Converters et ensuite New/Converter with Id.

3. 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.

4. 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 :

1. Création du Template
Dans l'explorateur de projet, clic droit sur le projet et sélectionner JBoss Tools JSF et Save As Template.

2. Ajouter l'implémentation.

3. Ajouter les préférences.

On choisit les dossiers et/ou bibliothèques à ajouter dans le template.

4. 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éé 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 nouveaux projets.

IV-B - Ajouter une bibliothèque de tags

Il est possible d'ajouter d'autres bibliothèques de tags que JSF et Richfaces, nous allons voir comment ajouter les bibliothèques de Rcfaces.

1. Ajouter les tags Rcfaces ou le jar qui les contient dans le projet.

2. Utiliser le bouton import dans la palette.

3. Sélection du fichier TLD : l'assistant de création de tags nous propose de sélectionner le fichier TLD.

4. Choix des Tags : l'assistant propose la liste des tags disponibles. Si la bibliothèque 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.

5. Ajouter un nouveau groupe de bibliothèques : on ajoute la bibliothèque à un nouveau Groupe créé en cochant create New Group, en cliquant sur OK. On termine ainsi l'ajout de la nouvelle bibliothèque.

On peut également ajouter une nouvelle bibliothèque de tags, à 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

Lorsqu’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.

1. 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électionne Save as Template.

2. Définir le nom du template.

Nous pouvons créer une page de Template dans les préférences Eclipse.

1. Ouvrir les préférences Eclipse
Windows/Preferences.

2. Sélectionner JSF Page dans la rubrique JBoss tools.

3. Sélectionner 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 nouveau fichier xhtml.

IV-D - Support de Facelets

JBoss tools propose nativement l'utilisation de Facelets, plusieurs outils sont à la disposition du développeur :

1. 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.

2. 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.

3. 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.

4. Outils de la Palette : la palette JBoss Tools dispose de tous les composants Facelets.

5. Assistant de code : l'assistant de code propose aussi de l'aide pour l'utilisation de l'attribut jsfc ainsi que les tags de Facelets, l'assistant devrait proposer tous les tags JSF à l'intérieur 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.

6. Éditeur visuel : l'éditeur visuel prend en charge les Facelets et affiche la page en tenant compte des templates utilisés.

V - Remerciements

Mes remerciements les plus sincères pour :

- djo.mos pour ses encouragements et sa relecture ;

- romaintaz pour sa relecture ;

- RomainVALERI pour sa relecture.