Lapis JSF Exporter
Certaines librairies JSF proposent des fonctionnalités d’export des tableaux (dataTable). Malheureusement, souvent ces fonctionnalités sont limités aux composants de la librairie elle-même. J’ai trouvé la librairie Lapis JSF Exporter très intéressante car elle permet d’exporter des composants de plusieurs librairies différentes de la même façon. De plus, elle est très facile d’accès et donc rapidement extensible.
Le projet est hébergé sur GitHub à l’adresse suivante : https://github.com/rdicroce/jsfexporter
Fonctionnalités
Dans la version actuelle (1.0.1.Final), il est possible d’exporter les composants suivants :
- h:panelGrid
- h:dataTable
- rich:dataTable
- p:dataTable (avec des colonnes dynamiques, lazy loading et des p:columnGroup)
- p:treeTable
- p:dataList
Les composants supportant l’export à l’intérieur des cellules sont, entre autres :
- h/p:commandLink
- h:outputFormat
- h:panelGroup
- p:cellEditor
Les supports d’exports existants sont les suivants :
- CSV
- XML
- XLS/XLSX
Installation
Pour installer la librairie, il faut ajouter dans les dépendances du projet la librairie core (jsf-exporter-core). C’est la librairie autour de laquelle toutes les implémentations sont développées.
<dependency> <groupId>com.lapis.jsfexporter</groupId> <artifactId>jsf-exporter-core</artifactId> <version>1.0.1.Final</version> </dependency>
Il faudra ensuite déclarer le module d’exportation (CSV, PDF, etc.)
<dependency> <groupId>com.lapis.jsfexporter</groupId> <artifactId>export-type-csv</artifactId> <version>1.0.1.Final</version> </dependency> <dependency> <groupId>com.lapis.jsfexporter</groupId> <artifactId>export-type-excel</artifactId> <version>1.0.1.Final</version> </dependency> <dependency> <groupId>com.lapis.jsfexporter</groupId> <artifactId>export-type-pdf</artifactId> <version>1.0.1.Final</version> </dependency> <dependency> <groupId>com.lapis.jsfexporter</groupId> <artifactId>export-type-xml</artifactId> <version>1.0.1.Final</version> </dependency>
Enfin, si vous souhaitez exporter des composants d’une des deux librairies RichFaces ou PrimeFaces, le “connecteur” sur la librairie
<dependency> <groupId>com.lapis.jsfexporter</groupId> <artifactId>export-source-primefaces</artifactId> <version>1.0.1.Final</version> </dependency> <dependency> <groupId>com.lapis.jsfexporter</groupId> <artifactId>export-source-richfaces</artifactId> <version>1.0.1.Final</version> </dependency>
Exemple
Après avoir inclus les dépendances, pour utiliser ce composant d’export, il faut d’une part, le déclarer dans les namespaces XML de la page XHTML puis l’utiliser en complément d’un bouton JSF :
xmlns:l="http://www.lapis.com/jsf/exporter" ... <p:commandButton value="Export XLSX" ajax="false"> <l:dataExporter source="table" fileType="excel" fileName="myfile"/> </p:commandButton>