2012-07-18 57 views
2

我爲我的web應用程序使用Struts2,Spring和Hibernate。 現在,我試圖用jasper報告struts插件生成PDF報告。 我添加了結果類型的struts.xml文件:JasperReport插件Struts2強制下載

<result-types> 
     <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult" default="false"/> 
    </result-types> 

行動定義:

<action name="vf" class="packaget.InvoiceAction" method="seeInvoice"> 
     <result name="success" type="jasper"> 
      <param name="location">/WEB-INF/reports/invoice.jasper</param> 
      <param name="dataSource">invoiceSource</param> 
      <param name="format">PDF</param> 
      <param name="contentDisposition">filename="Invoice.pdf</param> 
      <param name="documentName">Invoice.pdf</param> 
      <param name="reportParameters">invoiceParameters</param> 
     </result> 
    </action> 

這裏是我的動作類:

public class InvoiceAction extends BaseAction implements Preparable {  
    ... 
    public String seeInvoice(){ 
     List<Invoice> invoice= new ArrayList<Invoice>(); 
     facturas.add(new Invoice()); 
     invoiceParameters.put("message","test"); 
     return SUCCESS; 
    } 

} 

我要生成一個下載彈出式窗口,我不想在瀏覽器中看到報告。 我該如何強制這個? contentDispositiondocumentName參數沒有影響...

在此先感謝。

+1

'文件名= 「Invoice.pdf'你缺少「」,它是一個錯字? – 2012-07-18 09:56:26

+0

嗨Umesh,我把「在價值的盡頭,但沒有影響...我做錯了什麼? – jzafrilla 2012-07-18 10:19:28

+0

嗨,這是一個有趣的話題,你可以配置你的瀏覽器要求位置保存下載文件,而不是保存到默認位置 – Jaiwo99 2012-07-18 10:32:31

回答

1

您必須在內容處置中添加「附件」。

<param name="contentDisposition">attachment</param> 

而除去文件名= 「Invoice.pdf」。 此參數與documentName相同。一起使用它們將在HTTP響應中複製這些信息。

<param name="contentDisposition">filename="Invoice.pdf"</param>