JSF + SpringWebFlow + jasper - problema com relatorio

0 respostas
Nabas

Olá pessoal,

Estou com um problema ao imprimir um relatorio PDF. Ao escrever no output ele não abre a tela do PDF com o relatorio, simplesmente passa pelo write e close e não faz nada e nem gera nenhum erro. Ja procurei em varios lugares e todos fazem do mesmo jeito ou bem parecido com o que estou fazendo. Mas não sei pq não imprime.
Não estranhem o jeito de pegar o ServletContext e o response, pois como uso JSF junto com SWF não sei pq não consigo usar o FacesContext.getCurrentInstance(), então uso da forma q esta no codigo.

Segue o metodo q faz a impressão:

Alguem tem alguma ideia pra me ajudar
Vlw

public void gerarRelatorio(RequestContext context) {
	WebApplicationContext web = ContextLoader
		.getCurrentWebApplicationContext();
	ServletContext servletContext = web.getServletContext();

	String pathRel = servletContext
		.getRealPath("/reports/RelProducaoEnsaiosTransformacao.jasper");
	HttpServletResponse response = (HttpServletResponse) context
		.getExternalContext().getNativeResponse();

	try {
	    if (dadosConsulta != null && dadosConsulta.size() > 0) {
		ServletOutputStream outputStream = response.getOutputStream();
		response.setContentType("application/pdf");
		response.setHeader("Content-Disposition",
				"attachment; filename=RelProducaoEnsaiosTransformacao.pdf");
		Map<String, String> parameters = new HashMap<String, String>();
		// recebe por parametro uma lista da propia classe jah populada
		JRBeanCollectionDataSource jrds = new JRBeanCollectionDataSource(
			dadosConsulta);
		JasperPrint print = JasperFillManager.fillReport(pathRel,
			parameters, jrds);

		print.setLocaleCode("pt_BR");
		byte[] bytes = JasperExportManager.exportReportToPdf(print);
		outputStream.write(bytes);
		outputStream.flush();
		outputStream.close();
	    } else {
		// implementar
	    }
	} catch (Exception e) {
	    e.printStackTrace();
	}
    }
Criado 1 de outubro de 2009
Respostas 0
Participantes 1