Voir le flux RSS

OButterlin

Externalisation d'une bibliothèque de composite-components

Noter ce billet
par , 14/09/2015 à 11h42 (443 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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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

Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog Viadeo Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog Twitter Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog Google Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog Facebook Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog Digg Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog Delicious Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog MySpace Envoyer le billet « Externalisation d'une bibliothèque de composite-components » dans le blog Yahoo

Mis à jour 15/09/2015 à 10h35 par OButterlin

Catégories
Java

Commentaires