Pessoal, estou com dificuldade em chamar um relatório com sub-relatório… já vi alguns soluções aqui tentei implementar mais sem êxito.
mensagem de erro
método que gera o relatório
public void relatorioExtraConta() {
byte[] bytes = null;
try {
Connection conn = null;
conn = this.conexao.getConnection();
FacesContext context = FacesContext.getCurrentInstance();
context.responseComplete();
ServletContext scontext = (ServletContext) context.getExternalContext().getContext();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//load report location
FileInputStream fis = new FileInputStream(scontext.getRealPath("/WEB-INF/Relatorios/Contabilidade/testeReport.jasper"));
BufferedInputStream bufferedInputStream = new BufferedInputStream(fis);
JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(bufferedInputStream);
Map parametros = new HashMap();
parametros.put("codigoConta", codigoConta);
// caminho do meu sub-relatório
parametros.put("SUBREPORT_DIR", "\"/WEB-INF/Relatorios/Contabilidade/testeReport_subreport1.jasper\"");
bytes = JasperRunManager.runReportToPdf(relatorioJasper, parametros, conn);
if (bytes != null && bytes.length > 0) {
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
} catch (JRException ex) {
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
//connection.close();
}
}
