Problema JarperReport + JSF + Primefaces

2 respostas
rodrigo.fai

Olá pessoal, boa tarde!

Criei um método responsável por gerar e exibir um relatório em PDF, porém esse mesmo relatório não é exibido na tela! Simplismente não acontece nada, é como se não fosse definido ação nenhuma para o botão.
Estou usando JSF e Primefaces.

O código para geração do relatório é o seguinte:

FacesContext facesContext = FacesContext.getCurrentInstance();  

		facesContext.getExternalContext().getRequest();  
		HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();  
		OutputStream os = null;  

		try {  
			String reportUrlReal = clientOutput.getApplicationRoot()+"\\WEB-INF\\classes\\rptAcordoSimulacao.jasper";  

			JasperPrint jasperPrint = JasperFillManager.fillReport(reportUrlReal, mapa, ds);  
			byte[] pdf = JasperExportManager.exportReportToPdf(jasperPrint);  

			os = response.getOutputStream();  
			response.setContentType("application/pdf");  
			response.setContentLength(pdf.length);  
			response.setHeader("Content-disposition","attachment; filename=\"rptAcordoSimulacao.pdf\"");  
			os.write(pdf);  
			os.flush();  
		} catch (Exception e) {  
			e.printStackTrace();  
		} finally{  
			try {  
				if(os != null){  
					os.close();  
				}  
				facesContext.responseComplete();  
			} catch (IOException e) {  
				e.printStackTrace();  
			}  
		}

Alguém sabe me dizer o que estar faltando??

Obrigado.

2 Respostas

raphael.ricci
rodrigo.fai:
Olá pessoal, boa tarde!

Criei um método responsável por gerar e exibir um relatório em PDF, porém esse mesmo relatório não é exibido na tela! Simplismente não acontece nada, é como se não fosse definido ação nenhuma para o botão.
Estou usando JSF e Primefaces.

O código para geração do relatório é o seguinte:

FacesContext facesContext = FacesContext.getCurrentInstance();  

		facesContext.getExternalContext().getRequest();  
		HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();  
		OutputStream os = null;  

		try {  
			String reportUrlReal = clientOutput.getApplicationRoot()+"\\WEB-INF\\classes\\rptAcordoSimulacao.jasper";  

			JasperPrint jasperPrint = JasperFillManager.fillReport(reportUrlReal, mapa, ds);  
			byte[] pdf = JasperExportManager.exportReportToPdf(jasperPrint);  

			os = response.getOutputStream();  
			response.setContentType("application/pdf");  
			response.setContentLength(pdf.length);  
			response.setHeader("Content-disposition","attachment; filename=\"rptAcordoSimulacao.pdf\"");  
			os.write(pdf);  
			os.flush();  
		} catch (Exception e) {  
			e.printStackTrace();  
		} finally{  
			try {  
				if(os != null){  
					os.close();  
				}  
				facesContext.responseComplete();  
			} catch (IOException e) {  
				e.printStackTrace();  
			}  
		}

Alguém sabe me dizer o que estar faltando??

Obrigado.

Cara, você já tentou passar ajax false na sua página jsf?

rodrigo.fai
raphael.ricci:
rodrigo.fai:
Olá pessoal, boa tarde!

Criei um método responsável por gerar e exibir um relatório em PDF, porém esse mesmo relatório não é exibido na tela! Simplismente não acontece nada, é como se não fosse definido ação nenhuma para o botão.
Estou usando JSF e Primefaces.

O código para geração do relatório é o seguinte:

FacesContext facesContext = FacesContext.getCurrentInstance();  

		facesContext.getExternalContext().getRequest();  
		HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();  
		OutputStream os = null;  

		try {  
			String reportUrlReal = clientOutput.getApplicationRoot()+"\\WEB-INF\\classes\\rptAcordoSimulacao.jasper";  

			JasperPrint jasperPrint = JasperFillManager.fillReport(reportUrlReal, mapa, ds);  
			byte[] pdf = JasperExportManager.exportReportToPdf(jasperPrint);  

			os = response.getOutputStream();  
			response.setContentType("application/pdf");  
			response.setContentLength(pdf.length);  
			response.setHeader("Content-disposition","attachment; filename=\"rptAcordoSimulacao.pdf\"");  
			os.write(pdf);  
			os.flush();  
		} catch (Exception e) {  
			e.printStackTrace();  
		} finally{  
			try {  
				if(os != null){  
					os.close();  
				}  
				facesContext.responseComplete();  
			} catch (IOException e) {  
				e.printStackTrace();  
			}  
		}

Alguém sabe me dizer o que estar faltando??

Obrigado.

Cara, você já tentou passar ajax false na sua página jsf?

Consegui resolver cara!! Além do ajax false, estava faltando também usar o componente do primefaces!!! Valeu..

Criado 5 de outubro de 2012
Ultima resposta 5 de out. de 2012
Respostas 2
Participantes 2