Pessoal, estou com problemas ao gerar relatórios com IReport. O relatório esta sendo gerado perfeitamente, mas na hora de abrir ele informa que o arquivo está corrompido. Alguém poderia me dar uma força para corrigir este problema?
Faço outra pergunta, qual seria a melhor forma, colocar a consulta no Ireport ou colocar através de um DataSource?
obs: não sei nenhuma das duas, fiz isto através de pesquisas na net!
[code] public String gerarRelatorioGeralPorInscritos() throws Exception {
try {
Connection con = Connect.getConexao();
con.createStatement();
Statement stmt = con.createStatement();
String sql = "SELECT * FROM tb_inscritos";
ResultSet rs = stmt.executeQuery(sql);
JRResultSetDataSource dataSource = new JRResultSetDataSource(rs);
HashMap map = new HashMap();
map.put("sql", sql);
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
InputStream reportStream = context.getExternalContext().getResourceAsStream("/web/WEB-INF/relatorio/" + "RelatorioGeralPorInscritos.jasper");
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment;filename=" + "RelatorioGeralPorInscritos" + ".pdf");
ServletOutputStream servletOutputStream = response.getOutputStream();
try{
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, map, dataSource);
}finally{
context.responseComplete();
servletOutputStream.flush();
servletOutputStream.close();
}
} catch (Exception e) {
System.out.println("NÃO FOI POSSIVEL EXIBIR O RELATÓRIO");
e.printStackTrace();
}
return "Sucesso";
}[/code]
Grato!