Я пытаюсь создать простой отчет в формате PDF, используя JasperReport одним нажатием кнопки.Вот соответствующий код:
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.Я что-то здесь не так делаю?