Erro ao tentar gerar Relatorio PDF com codigo que funciona em outro UC ! [ RESOLVIDO ]

1 resposta
networking.rafael

[b]Boa tarde pessoal,

estou tentando gerar um relatório PDF simples com IReport, meu codigo é o seguinte :[/b]

List<Cargo> lista= this.getListaCargos();
		
		try{

			if (lista!= null && lista.size() > 0) {
				HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
				ServletOutputStream responseStream = response.getOutputStream();
		        
				response.setContentType("apllication/pdf");
				response.setHeader("Content-Disposition", "attachment; filename=\"RelacaoCargosVagos.pdf\"");
				
				String report = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/relatorios/RELATORIO_CARGOS_VAGOS.jasper");
				JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(lista, false);
				
				Map<String, Object> params = new HashMap<String, Object>();
				params.put("caminhoLogo", FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/img/logo.jpg"));
				
				JasperPrint print = JasperFillManager.fillReport(report, params, ds);
				JasperExportManager.exportReportToPdfStream(print, responseStream);
				
				responseStream.flush();
		                responseStream.close();
		        FacesContext.getCurrentInstance().getRenderResponse();
		        FacesContext.getCurrentInstance().responseComplete();

Mas pego o seguinte erro quando passa para esta linha > JasperExportManager.exportReportToPdfStream(print, responseStream); :

An Error Occurred:

getOutputStream() has already been called for this response

± Stack Trace

java.lang.IllegalStateException: getOutputStream() has already been called for this response

at org.apache.catalina.connector.Response.getWriter(Response.java:637)

at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)

at com.sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.java:723)

at javax.faces.context.ExternalContextWrapper.getResponseOutputWriter(ExternalContextWrapper.java:669)

at com.sun.faces.application.view.FaceletViewHandlingStrategy.createResponseWriter(FaceletViewHandlingStrategy.java:879)

at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:374)

at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)

at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:273)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:509)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168 )

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98 )

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118 )

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Alguém sabe como resolver isso ? O curioso é que uso um código idêntico para gerar um outro relatório PDF em outro UC mas tudo funfa perfeitamente…

Grato,

1 Resposta

networking.rafael

Resolvi o problema criando uma lista com um Bean próprio para o primeiro nível do documento, alimentei essa nova lista com a Lista de entidades

ao invés de manda-lá diretamente para geração do relatório …

Assim tudo funfou perfeitamente …

Criado 6 de maio de 2013
Ultima resposta 9 de mai. de 2013
Respostas 1
Participantes 1