Chamar um relatório com sub-relatório em Java

0 respostas
jsfjpajava
B

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();
    }

}
Criado 27 de fevereiro de 2017
Respostas 0
Participantes 1