JSF + JasperReport: открыть + скачать файл в браузере

Я использовал отчет о яшме в моем проекте jsf. Я хочу открыть файл в браузере, а затем загрузить его. но я не могу скачать. это мой код:

public void doPdf(List<?> list, String pathTemplate, String fileName) throws JRException, IOException {
    String fileNameReport = new StringBuilder("filename=\"").append(fileName).append("\"").toString();
    
    JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(list);
    InputStream jasperTemplate = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(pathTemplate);
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperTemplate);
    
    Map<String, Object> parameters = new HashMap<>();
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jr);
    HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();

    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", fileNameReport);
     
    ServletOutputStream outputStream = response.getOutputStream();
    JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);

    outputStream.flush();
    outputStream.close();
    FacesContext.getCurrentInstance().responseComplete();
  }

0 ответов

Другие вопросы по тегам