2011-05-19 75 views
1

我有一個基於JSF2和RichFaces的應用程序;我開發了一個用POI導出PDF數據的過程。使用JSF2和RichFaces導出到XLS

在我的XHTML我打電話的方法:

<rich:modalPanel> 
    ... 
    <p:commandButton image="/images/excel.png" action="#{managedBean.doXLS}"   ajaxSingle="true" rendered="true" value="Exportar a XLS"> 
     <f:setPropertyActionListener target="#{statisticsBean.optionToExport}"  value="1"/> 
    </p:commandButton> 
    ... 
</rich:modalPanel> 

而且我在Java這樣的呼籲:

... // create XLS 
response.setHeader("Content-Disposition", "attachment; filename=\"" +  nombreFichero + ".xls\""); 
response.setContentType("application/vnd.ms-excel"); 

OutputStream o = response.getOutputStream(); 

if (workbook!=null && o!=null) 
    workbook.write(o); 
o.flush(); 
o.close(); 

if (!FacesContext.getCurrentInstance().getResponseComplete()) 
FacesContext.getCurrentInstance().responseComplete(); 

沒有異常被拋出了,但在我的屏幕沒有發生。有什麼問題?


解決:

OK,與@BalusC(感謝)說話後不久,我不能響應中的文件 「富:modalPanel」,因爲這個人是阿賈克斯創建。沒有MATHERS如果是ajaxsingle或不。

回答

0

好的,在與@BalusC交談(謝謝)之後,我無法迴應「rich:modalPanel」中的文件,因爲這個文件是由ajax創建的。沒有MATHERS如果是ajaxsingle或不。

0

我做了這樣的:

<script language="JavaScript"> 
    //<![CDATA[ 
     function openPdf() { 
      pdfWindow = window.open('#{pdfDocument.documentLink}'); 
      if (window.focus) {pdfWindow.focus()}; 
      return false; 
     } 
     //]]> 
    </script> 

這是使用的RichFaces,Facelets的和Spring Webflow的:

<a4j:commandButton id="printDocument" value="Pdf link" 
    action="generatePdf" styleClass="button" oncomplete="openPdf();" rendered="/> 

隨着OpenPDF定義。動作generatedPdf調用一個webflow動作,它調用一個Java類,它在磁盤上的某處生成pdf文檔。 pdfDocument.documentLink包含一個Servlet的路徑,該路徑通常與內容處置並將結果傳送給瀏覽器。