par , 14/09/2015 à 11h42 (1698 Affichages)
Les composite-components représentent un moyen à la fois simple et élégant de partager des comportements et/ou des représentations d'informations.
On les définit très simplement dans un projet JSF2 en les incluant dans le sous-répertoire /WEB-INF/resources/component/.
Ils sont alors utilisables par l'application par l'intermédiaire de leur nom de domaine, comme ceci
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:util="http://java.sun.com/jsf/composite/component"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
...
<util:unCompositeComponent … />
...
</html> |
Cette utilisation est extrêmement simple mais il manque une approche majeure : la possibilité de partager une bibliothèque de composants avec plusieurs projets.
Pour ce faire, il faut externaliser les composants sous forme de fichier jar.
Ce jar sera inclus dans tous les projets demandeurs qui n'auront plus qu'à utiliser les composants via le nom de domaine de la bibliothèque de la même manière que s'ils avaient été placés dans le répertoire /WEB-INF/resources/component/.
Comment procéder
Créez un projet java simple avec la structure suivante :
1 2 3 4 5 6 7 8 9
|
projet-composite
src
componentsResources.properties
META-INF
resources
component
unCompositeComponent.xhtml
faces-config.xml |
Le fichier faces-config.xml permet de forcer le traitement des annotations JSF2 du jar de composants. Le répertoire src dépend de votre besoin d'intégrer du code ou des fichiers de propriétés à vos composants. Exemple de faces-config.xml :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<application>
<locale-config>
<default-locale>fr</default-locale>
<supported-locale>fr</supported-locale>
<supported-locale>en</supported-locale>
</locale-config>
</application>
</faces-config> |
Dans notre exemple, il ne fait que référencer les fichiers de propriétés qui seront utilisés pour les constantes texte des composants, mais il pourrait être vide.
Si vos composants font référence à d'autres classes ou fichiers, n'oubliez pas que le ClassLoader est celui de l'application utilisatrice, il faut en tenir compte si par exemple on fait référence à des chemins relatifs.
Lorsque l'implémentation de vos composants est terminée, vous n'avez plus qu'à créer un jar à partir de votre projet.
Avec Eclipse, le plus simple est de faire un click droit sur le projet → Export... → JAR file et de suivre la procédure.
Vous n'avez plus qu'à intégrer votre jar à vos projets JSF2 pour les utiliser.Pour plus d'informations sur ce qui est de la conception de composite-components, je vous propose de lire mon tutoriel sur les Composite-Components de JSF2