当我试图将datatable信息导出到PDF时,我遇到了这个问题,这个方法可以完成所有操作,但是它不会下载PDF,甚至不会生成。
Netbeans版本: 8.2 JSF: 2.2 基本情况: 5.3
Libraries used:
Jasperreports 6.3
poi 3.14
commons-beanutils-1.9.0
commons-collection-3.2.2
commons-digester-2.1
commons-logging-1.1.1
groovy-all-2.4.0
itext-2.1.7.js5
jaxp-ri
jcommon-1.0.23
jfreechart-1.0.19我的方法是:
public void exportpdf(OrdenRetiro or) throws JRException, IOException {
conexion con = new conexion();
Map<String, Object> parametros = new HashMap<String, Object>();
FacesContext context = FacesContext.getCurrentInstance();
ServletContext servleContext = (ServletContext) context.getExternalContext().getContext();
parametros.put("RutaImagen", servleContext.getRealPath("/reportes/"));
parametros.put("cod_ordenretiro", or.getCod_ordenretiro());
String temperatura = or.getEs_temperado()==1?"ReporteFreezer.jasper":"ReporteNoFreezer.jasper";
String dirReporte = servleContext.getRealPath("/reportes/"+temperatura);
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.addHeader("Content-disposition", "attachment;filename=Orden de Retiro"+or.getCod_ordenretiro()+".pdf");
response.setContentType("application/pdf");
JasperPrint impres = JasperFillManager.fillReport(dirReporte, parametros, con.getConnection());
JasperExportManager.exportReportToPdfStream(impres, response.getOutputStream());
context.responseComplete();
}有什么想法吗?
发布于 2017-01-26 16:09:22
找到解决办法了。
当该方法工作但不导出时,是因为xhtml上的ajax。在做了一些研究后得到了答案here
我引用这句话。
第一个问题是,默认情况下,
<p:commandLink>发送一个Ajax请求。此请求由JavaScript代码触发。但是,JavaScript不能对包含文件下载的响应做任何事情。由于安全限制,JavaScript无法生成另存为对话之类的内容。这种反应基本上完全被忽视了。 您需要将ajax="false"添加到<p:commandLink>以关闭ajax,以便该按钮触发一个正常的同步HTTP请求,或者您需要用标准的<h:commandButton>替换它
https://stackoverflow.com/questions/41876662
复制相似问题