【问题标题】:Report download not prompting user to save报告下载不提示用户保存
【发布时间】:2013-07-19 02:56:12
【问题描述】:

我正在尝试在单击按钮时使用 JasperReport 生成一个简单的 PDF 报告。以下是相关代码:

report.xhtml:

<p:commandButton value="#{msg['report.generate']}" action="#{generateReportBean.generateReport}" />

GenerateReportBean.java:

public void generateReport() throws JRException, IOException {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    HttpServletResponse response = (HttpServletResponse) externalContext
            .getResponse();

    InputStream reportStream = facesContext.getExternalContext().getResourceAsStream("/WEB-INF/reports/report.jrxml");
    JasperDesign jasperDesign = JRXmlLoader.load(reportStream);
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
    byte[] report = JasperRunManager.runReportToPdf(jasperReport, new HashMap(), new JREmptyDataSource());

    response.setContentType("application/pdf");
    response.setContentLength(report.length);
    response.setHeader("Content-disposition", "attachment; filename=report.pdf" );

    ServletOutputStream servletOutputStream = response.getOutputStream();
    servletOutputStream.write(report);
    servletOutputStream.flush();
    servletOutputStream.close();
    facesContext.responseComplete();

}

问题是,当我使用 FireBug 时,我可以看到响应(对我来说没问题):

X-Powered-By    JSF/2.0
Content-Type    application/pdf
Content-Length  1310
Content-Disposition attachment; filename=report.pdf
Server  Jetty(7.4.0.v20110414)

但我没有得到允许我保存 pdf 的弹出窗口。如您所见,我正在开发 Jetty 7.4 maven 插件。我在这里做错了吗?

【问题讨论】:

    标签: jsf jsf-2 jasper-reports


    【解决方案1】:

    将 ajax="false" 添加到您的命令按钮

    <p:commandButton ajax="false" value="#{msg['report.generate']}" action="#{generateReportBean.generateReport}" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多