【发布时间】: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