Принудительная загрузка плагина JasperReport для Struts2

Я использую Struts2, Spring и Hibernate для своего веб-приложения. Теперь я пытаюсь создать отчеты в формате PDF с помощью плагина jasper report struts. Я добавляю тип результата в файл 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 или documentName параметры не действуют...

Заранее спасибо.


person jzafrilla    schedule 18.07.2012    source источник
comment
<param name="contentDisposition">filename="Invoice.pdf</param> вам не хватает '', это опечатка?   -  person Umesh Awasthi    schedule 18.07.2012
comment
Привет, Умеш, я поставил в конце значения, но это не действует... что я делаю неправильно?   -  person jzafrilla    schedule 18.07.2012
comment
Привет, это интересная тема, вы можете настроить свой браузер так, чтобы он запрашивал местоположение для сохранения загруженного файла, а не сохранял его в местоположении по умолчанию.   -  person Jaiwo99    schedule 18.07.2012
comment
@jzafrilla: мне кажется, все в порядке, я подозреваю, что тип контента настроен не так, как ожидалось.   -  person Umesh Awasthi    schedule 18.07.2012


Ответы (1)


Вы должны добавить «приложение» к расположению контента.

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

И удалите файл filename="Invoice.pdf". Этот параметр делает то же самое, что и documentName. Их совместное использование приведет к дублированию этой информации в ответе HTTP.

<param name="contentDisposition">filename="Invoice.pdf"</param>
person marcioggs    schedule 10.02.2014