PrimeFaces仅导出一个可扩展的表



我试图使用PrimeFaces扩展名将视图导出到XLSX。我有一个主表和一个可扩展的行,里面有2个表。

出口商在可扩展行中的第一个数据词效果很好,但对于另一个数据表中的排名效果不佳。有什么想法吗?

<p:dataTable id="mainTable" var="mainObject" value="#{mainBean.mainList}">
    <p:column exportable="false" width="5%">  
        <p:rowToggler />  
    </p:column>
    <p:column>
        <f:facet name="header">
            <h:outputText value="main column A"/>
        </f:facet>
        <h:outputText value="#{mainObject.columnA}" />
    </p:column>
    <p:column>
        <f:facet name="header">
            <h:outputText value="main column B"/>
        </f:facet>
        <h:outputText value="#{mainObject.columnB}" />
    </p:column>
    <p:rowExpansion>
        <p:datTable id="relatedTableA" var="relatedA" value="#{mainObject.relatedA}">
            <f:facet name="header">
                <h:outputText value="Related A"/>
            </f:facet>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Related A column A"/>
                </f:facet>
                <h:outputText value="#{relatedA.columnA}" />
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Related A column B"/>
                </f:facet>
                <h:outputText value="#{relatedA.columnB}" />
            </p:column>
        </p:dataTable>
        <p:datTable id="relatedTableB" var="relatedB" value="#{mainObject.relatedB}">
            <f:facet name="header">
                <h:outputText value="Related B"/>
            </f:facet>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Related B column A"/>
                </f:facet>
                <h:outputText value="#{relatedB.columnA}" />
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Related B column B"/>
                </f:facet>
                <h:outputText value="#{relatedB.columnB}" />
            </p:column>
        </p:dataTable>
    </p:rowExpansion>
</p:dataTable>
<h:commandLink>
   <p:graphicImage url="/resources/images/Excel32.png" width="32"/>
   <pe:exporter type="xlsx" target="mainTable" fileName="fileExport" facetBackground="#AAFFBB" datasetPadding="4" />   
</h:commandLink>

我遵循了本指南:https://www.primefaces.org/showcase-ext/sections/exporter/exporter/expandabletable.jsf

在我的应用程序中,视图非常完美。我使用切换,然后显示2个表。唯一的问题是它仅导出一个扩展物。

感谢您的时间。

似乎根本不支持。

在出口商组件源代码中,当涉及导出他们已经硬编码的行支出时仅考虑每个行的第一个孩子:

if (rowExpansion.getChildren().get(0) instanceof DataTable) {
    final DataTable childTable = (DataTable) rowExpansion.getChildren().get(0);
    // ...
}

这就是为什么您只在输出中获取第一个子表。

使用CustomeXporter功能,您有机会扩展ExcelExporter并覆盖似乎负责您的问题的方法exportCells。然后更改行为以在rowExpansion.getChildren()上进行循环,而不仅仅是获得第一个元素。

从链接站点配置自定义出口商的一般步骤:

步骤1:创建一个在Resouces Folder.below下的名为Meta-Inf的文件夹 Meta-Inf文件夹创建另一个名为Services的文件夹。

步骤2:Creae A 名称为" ExporterFactory"作为服务的文件(完全二进制名称 服务)。 这里应该是org.primefaces.extensions.component.exporter.exporterfactory。

步骤3: 在任何地方提供出口商工厂的实施者/提供商 在您的项目中。 并在ExporterFactory文件中复制自定义出口商工厂实现的绝对路径 如何做:复制DefaultExporterFactory的文件内容,并将文件重命名为CustomeXporterFactory.copy绝对路径 org.primefaces.extensions.showcase.util.customexporterfactory in ExporterFactory文件。

步骤4:复制出口商实现和 添加您自己的更改。并调用这些自定义实现(EX pdfcustomexporter,excelcustomexporter)代替内置 inmapmentations(ex pdfexporter,excelexporter)

相关内容

  • 没有找到相关文章

最新更新