Relatorio JSF

Fala galera blz?

Alguem pode me ajudar com relatorios? Preciso gerar alguns relatorios em JSF e nao estou conseguindo alguem tem um exemplo de como fazer um relatorio em pdf no JSF.

Estou usando o JSF 2.0, primefaces e hibernate. Peço a ajuda de voces. abraços.

Douglas,dá uma sacada nesse exemplo,é no JSF 1.2 mas pode te atender:

public void imprimirManual() throws IOException{
		try {
			ServletContext ctx = (ServletContext) FacesContext
			.getCurrentInstance().getExternalContext().getContext();
			File f = new File(ctx.getRealPath("/publicacoes/manual2011.pdf"));
			HttpServletResponse response = (HttpServletResponse) FacesContext
			.getCurrentInstance().getExternalContext().getResponse();
			response.setContentType("application/pdf");
			response.setHeader("content-disposition",
			"attachment;filename=Manual2011.pdf");
			byte[]bytes = bytesFromFile(f);
			response.setContentLength(bytes.length);
			ServletOutputStream servletStream = response.getOutputStream();
			servletStream.write(bytes, 0, bytes.length);
			servletStream.flush();
			servletStream.close();
			FacesContext.getCurrentInstance().responseComplete();//NÃO funciona sem essa linha!!

		}catch(Exception e){
			e.printStackTrace();
		}
	}

Passando parâmetros:

	String path = ctx.getRealPath("/reports/acompanhamento.jasper");
			byte[] bytes = JasperRunManager.runReportToPdf(path, parameters,
					conn);

[quote]public void imprimirManual() throws IOException{
try {
ServletContext ctx = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
File f = new File(ctx.getRealPath("/publicacoes/manual2011.pdf"));
HttpServletResponse response = (HttpServletResponse) FacesContext
.getCurrentInstance().getExternalContext().getResponse();
response.setContentType(“application/pdf”);
response.setHeader(“content-disposition”,
“attachment;filename=Manual2011.pdf”);
byte[]bytes = bytesFromFile(f);
response.setContentLength(bytes.length);
ServletOutputStream servletStream = response.getOutputStream();
servletStream.write(bytes, 0, bytes.length);
servletStream.flush();
servletStream.close();
FacesContext.getCurrentInstance().responseComplete();//NÃO funciona sem essa linha!!

    }catch(Exception e){  
        e.printStackTrace();  
    }  
}  [/quote]

Eu crio uma nova classe, mas onde “chamo” o relatorio do banco? Teria que ser no ireport no caso? Nao entendi muito bem =/

[quote=douglascst90][quote]public void imprimirManual() throws IOException{
try {
ServletContext ctx = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
File f = new File(ctx.getRealPath("/publicacoes/manual2011.pdf"));
HttpServletResponse response = (HttpServletResponse) FacesContext
.getCurrentInstance().getExternalContext().getResponse();
response.setContentType(“application/pdf”);
response.setHeader(“content-disposition”,
“attachment;filename=Manual2011.pdf”);
byte[]bytes = bytesFromFile(f);
response.setContentLength(bytes.length);
ServletOutputStream servletStream = response.getOutputStream();
servletStream.write(bytes, 0, bytes.length);
servletStream.flush();
servletStream.close();
FacesContext.getCurrentInstance().responseComplete();//NÃO funciona sem essa linha!!

    }catch(Exception e){  
        e.printStackTrace();  
    }  
}  [/quote]

Eu crio uma nova classe, mas onde “chamo” o relatorio do banco? Teria que ser no ireport no caso? Nao entendi muito bem =/[/quote]

Como assim “chamar” do banco?

Quem dispara o relatório vai ser tua aplicação,crie um h:commandButton que invoca o método.

Nao tinha visto esse codigo

String path = ctx.getRealPath("/reports/acompanhamento.jasper"); byte[] bytes = JasperRunManager.runReportToPdf(path, parameters, conn);

É aqui que ele chama o relatorio do ireport(jasper). Certo?

[quote=douglascst90]Nao tinha visto esse codigo

String path = ctx.getRealPath("/reports/acompanhamento.jasper"); byte[] bytes = JasperRunManager.runReportToPdf(path, parameters, conn);

É aqui que ele chama o relatorio do ireport(jasper). Certo?[/quote]

Sim.

OBRIGADO

:-o
Da uma pesquisada na doc oficial

O proprio primefaces tem um gerador de relatorios PDF nao precisa por mais um framework ai nao amigão

Mas eu preciso de relatorios mais detalhados com dados de varias tabelas, com o componente do prime eu pego uma lista. No meu caso to usando o iReport, que ja esta gerando os relatorios, so preciso chamar ele(esse é o problema). Abraços.

raf4ever estou com problema nessa linha

byte[] bytes = JasperRunManager.runReportToPdf(path, parameters,conn);

em “path”, “parameters” e “conn” não entendi muito bem o que deve por, o qual do parametro???

obrigado.

nada pessoal

O problema ainda persiste…