2

Web アプリに Struts2、Spring、および Hibernate を使用しています。現在、ジャスパー レポート ストラット プラグインを使用して 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;
    }

}

ダウンロード ポップアップを生成したいのですが、ブラウザーでレポートを表示したくありません。どうすればこれを強制できますか? contentDispositionまたはdocumentNameparams は効果がありません...

前もって感謝します。

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 に答える