2015-11-02 16 views
0

我在我的項目中使用了<p:dataExporter type="xls" target="reportTable" fileName="ExportResult"/>。我需要一些功能。Overrite dataExporter方法或實現jsf中的懶惰導出

<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> 

當我點擊的commandButton - 「加載數據」的出口數據,從"#{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通過部分

回答

0

壯美PrimeFaces 5.2 Documentation states on page 132屬性列表保存數據。其中之一是:

pageOnly 0 String Exports only current page instead of whole dataset 

,並將頁面上#133甚至有一個例子:

PageOnly

默認情況下dataExporter適用於整個數據集,如果你倒是 像出口僅顯示在當前頁面的數據,設置頁面只有 爲真。

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

我不想出口可見頁面,我想導出所有的數據,但一點PICES,becouse如果我出口的所有數據,我得到了內存不足的錯誤。 – Pavel

+0

那麼你想下載100個xlsx文件?接着?手動合併它們?或者,對數據庫和服務器端的100個查詢將這些添加到塊中的xlsx?那麼,如果你想要後者,那麼就這樣做。查看出口商源代碼並根據您的需求進行調整。如果你有詳細的問題回到那些。現在的問題是'作業'一個 – Kukeltje

+0

不,他想要下載一個包含所有數據的文件。 –