2

我正在为我的网络应用程序使用 Struts2、Spring 和 Hibernate。现在,我正在尝试使用 jasper 报告 struts 插件生成 PDF 报告。我将结果类型添加到 struts.xml 文件:

    <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参数无效...

提前致谢。

4

1 回答 1

1

您必须在内容配置中添加“附件”。

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

并删除filename="Invoice.pdf"。此参数与 documentName 的作用相同。一起使用它们将在 HTTP 响应中复制此信息。

<param name="contentDisposition">filename="Invoice.pdf"</param>
于 2014-02-10T19:22:25.323 回答