2012-08-23 2 views
0

PrimeFaces을 사용하고 있습니다.JSF 2.0 PDF 보고서 열기 (저장 안 함)

나는 하나 개의 데이터 테이블을 생성하는 명령 링크 PDF에 포함이

나는 새 브라우저에서 PDF를 열려면이 링크를 클릭합니다.

PDF로 발전 보고서에 대한 내 코드 :

HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); 
String reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/report/personReport.jrxml"); 
JasperDesign jasperDesign = JRXmlLoader.load(reportPath); 
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 

ArrayList<PersonReportBean> arrayList = new ArrayList<PersonReportBean>(); 
arrayList.add(bean); // here bean populate with all data 
JRBeanCollectionDataSource collectionDataSource = new JRBeanCollectionDataSource(arrayList); 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<String, Object>(), collectionDataSource); 
response.setContentType("application/pdf"); 
JRPdfExporter exporter = new JRPdfExporter(); 
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); 
exporter.exportReport(); 
FacesContext.getCurrentInstance().responseComplete(); 
+0

당신이 읽을 수있는 [보고서 다운로드 사용자에게 저장하라는 메시지가 표시되지 않음] (http : // stac koflowflow.com/questions/6085049/report-download-not-prompting-user-to-save)에 게시 –

답변

0

당신이 시도 할 수

JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream()); 

대신 :

JRPdfExporter exporter = new JRPdfExporter(); 
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); 
exporter.exportReport(); 
+0

감사합니다,하지만 지금은 h : commandLink를 사용하여 해결할 것입니다 –