【问题标题】:Jasper Report Cannot Generate PDFJasper 报告无法生成 PDF
【发布时间】:2014-07-15 01:53:24
【问题描述】:

这是我第一次使用 Jasper Report, 我需要使用 Java Server Face JSF 生成 PDF,因此,在生成 PDF 后,它应该由浏览器下载

我使用 netbeans 代码生成的 Web 应用程序,带有 java server faces 框架和 primefaces

public void createPDF() throws IOException {
    List<Pelanggan> asdf = pelangganFacade.findAll();

    try {
        ServletContext ctx = (ServletContext)FacesContext.getCurrentInstance()
                .getExternalContext().getContext();

        String ReportTemplate = ctx.getRealPath("/WEB-INF/Blank_A4.jasper");

        Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("nama", asdf.get(1));

        HttpServletResponse response = (HttpServletResponse)FacesContext.getCurrentInstance()
                .getExternalContext().getContext();  
        response.addHeader("Content-disposition", "attachment; filename=testing.pdf");
        ServletOutputStream outputStream = response.getOutputStream();

        JasperPrint jasperPrint = JasperFillManager.fillReport(ReportTemplate, parameters);
        JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);

        outputStream.flush();
        outputStream.close();
        FacesContext.getCurrentInstance().responseComplete();
    } catch (JRException ex) {
        Logger.getLogger(TestReport.class.getName()).log(Level.SEVERE, null, ex);
    }
}

但它不起作用并给我一个错误

java.lang.ClassCastException: org.apache.catalina.core.ApplicationContextFacade cannot be      cast to javax.servlet.http.HttpServletResponse
Caused by: java.lang.ClassCastException: org.apache.catalina.core.ApplicationContextFacade     cannot be cast to javax.servlet.http.HttpServletResponse
at com.joandilee.TestReport.createPDF(TestReport.java:55)

有没有什么简单的方法可以使用 Jasper Report 生成 PDF 报告,然后下载到浏览器?

【问题讨论】:

    标签: jsf netbeans primefaces jasper-reports


    【解决方案1】:

    这不是 Jasper 错误

    替换

    HttpServletResponse response = (HttpServletResponse)FacesContext
                 .getCurrentInstance().getExternalContext().getContext();  
    

    HttpServletResponse response = (HttpServletResponse) FacesContext
                .getCurrentInstance().getExternalContext().getResponse();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多