覆盖dataExporter方法或在jsf中实现延迟导出

时间:2015-11-02 11:42:55

标签: primefaces

我在项目中使用<p:dataExporter type="xls" target="reportTable" fileName="ExportResult"/>。我需要一些功能。

<p:panelGrid columns="1" styleClass="currentReportTablesStyle" style="text-align: center">
                            <p:commandButton value="Load Data"
                                             id="dataLoaderButton"
                                             ajax="false"
                                             action="#{QCforCCReportBean.LoadReport()}"/>
                            <h:outputText value="Export to format:"/>
                            <h:commandLink disabled="#{QCforCCReportBean.isNotAdministrator}">
                                <p:graphicImage name="/images/xls_file.png" width="24"/>
                                <p:dataExporter type="xls" target="reportTable" fileName="ExportResult"/>
                            </h:commandLink>
                        </p:panelGrid>

当我点击命令按钮 - 导出数据的“加载数据”时,来自"#{QCforCCReportBean.LoadReport()}"的触发方法。此方法在参数中有两个变量:first和pageSize。我设置了变量0和50.它很酷。我有懒惰和好的分页。例如0-50,50-100,100-150等。 但是当我尝试导出数据时,触发了一些方法"#{QCforCCReportBean.LoadReport()}"但是变量是0- 87587(或者是另一个大数字。表中的所有行)和我的java崩溃java.lang.OutOfMemoryError: GC overhead limit exceeded

我想要导出数据的覆盖方法或修改dataExporter按部件保存数据

1 个答案:

答案 0 :(得分:0)

夸张PrimeFaces 5.2 Documentation states on page 132属性列表。其中之一是:

pageOnly    0    String    Exports only current page instead of whole dataset

在第133页上,甚至有一个例子:

  

PageOnly

     

默认情况下,dataExporter适用于整个数据集,如果你这样做的话   比如只导出当前页面上显示的数据,将pageOnly设置为   真。

<p:dataExporter type="pdf" target="tableId" fileName="cars" pageOnly="true"/>