Problème d’export Excel avec le Datatable exporter de Seam

By , 09/09/2010

Seam permet d’exporter très simplement des dataTable JSF en CSV ou en Excel. Pour cela il suffit de déclarer une dataTable et un lien qui fait référence au bon composant Seam :


<h:form id="theForm">
      <h:dataTable id="theDataTable" value="#{personList.personList}"
            var="person">
                  ...
      </h:dataTable>
</h:form>

...

<h:commandLink
      value="Export"
      action="#{excelExporter.export('theForm:theDataTable')}"
      />

Cette fonctionnalité est très pratique mais lorsqu’il y a un problème il est parfois très compliqué de trouver l’erreur. J’ai ainsi découvert par hasard que les colonnes doivent être composées de composants JSF et non de chaines de caractères simples pour apparaître dans l’export. Dans l’exemple suivant, seule la première colonne apparaîtra dans l’export :


<h:form id="theForm">
      <rich:dataTable id="theDataTable" value="#{personList.personList}"
                  var="person">
            <rich:column>
                  <f:facet name="header"><h:outputText value="Name"/></f:facet>
                  <h:outputText value="#{person.name}" />
            </rich:column>
            <rich:column>
                  <f:facet name="header"><h:outputText value="Age"/></f:facet>
                  #{person.age}
            </rich:column>
      </rich:dataTable>
</h:form>

Pour information, ce comportement est aussi valable pour le facet header. Ce comportement est enregistré en tant que “nouvelle fonctionnalité” dans le JIRA de Seam : https://jira.jboss.org/browse/JBSEAM-3213

Leave a Reply


seven + = 9

OfficeFolders theme by Themocracy