Geracao relatorio IREPORT

1 resposta
L

estou fazendo uam aplciacao java web (JSF,RICHFACES)...
e preciso gerar um relatorio...mas meu codigo mostra o pdf sempre rbanco...porq? la no relatorio jasper coloquei um texto estatico pra testar..mas o pdf so aparece branco.

segue meu codigo

public void processRequest(ActionEvent event) throws Exception{   
			Collection<CompraForm> relatorios = new ArrayList<CompraForm>();   
			FacesContext context = FacesContext.getCurrentInstance();  
			ServletContext sc = (ServletContext) context.getExternalContext().getContext();   
	        String nomeArquivo = sc.getRealPath("/teste.jasper");
			//logica   
			//relatorios.add(relatorio);   
	        //geraRelatorio();
	        imprimir(nomeArquivo,new HashMap());
			//JRBeanCollectionDataSource jrbc = new JRBeanCollectionDataSource(relatorios);   
		//	JasperPrint jasperPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("teste.jasper"), new HashMap(), jrbc);   
			//this.enviarPDF(jasperPrint);   
			}   
		
		public void imprimir(String relatorio, HashMap<String, Object> 
			parametros) { 
			     try { 
			        
			         parametros.put("data_inicio", "testandoooo");
	
			         HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();     
			         ServletOutputStream servletOutputStream = response.getOutputStream();   
			         
			         
			         
			         byte[] bytes = JasperRunManager.runReportToPdf(relatorio, parametros); //aqui vc substitui pelo seu gerador de relatorios, ao seu modo   
			       
			             response.setContentType("application/pdf");   
			             response.setHeader("Content-disposition", "filename=\"Pedido.pdf\""); //nome que vc quer dar ao arquivo   
			             response.setContentLength(bytes.length);   
			       
			             //sem essas linhas abaixo não funciona, não roda,  da pau hehehe   
			             servletOutputStream.write(bytes, 0, bytes.length);   
			             servletOutputStream.flush();   
			             servletOutputStream.close();   
			             FacesContext.getCurrentInstance().renderResponse();   
			             FacesContext.getCurrentInstance().responseComplete();  

	
			     } catch (Exception ex) { 
			         System.err.println("O arquivo não foi gerado corretamente!"); 
			         ex.printStackTrace(); 
			     } 
		 }

na pagina jsf chamo assim:

<h:form id="formulario">
	<h:commandLink   
                            value="Gerar relatório PDF" actionListener="#{relatorioBean.processRequest}" />				
        </h:form>

1 Resposta

furutani

Verifica se o datsource está com algum dado.
Caso você queria testar sem dados coloca o texto estatico na banda No Data

Criado 19 de fevereiro de 2011
Ultima resposta 19 de fev. de 2011
Respostas 1
Participantes 2