Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Passando sub dataset como parâmetro do model - gerando relatório jasper com spring mvc

Pessoal, como eu consigo passar um sub dataset no model para gerar o relatório?

Ex:

Eu consigo passar o datasource principal onde gera o relatório... model.addAttribute("datasource", relatorioProcessosDeferidos);

...mas no sumário do relatório eu tenho um gráfico que é gerado com dados de outro dataset. Como eu passaria essa nova lista (List) nos parâmetros do model para que o gráfico também seja carregado no meu relatório?

obrigado

2 respostas

Fala Marco, tudo bem?

No link abaixo (em ingles) são discutidas algumas formas como vc pode definir mais de uma datasource:

https://community.jaspersoft.com/wiki/how-use-multiple-data-sources-jaspersoft-studio-or-jasperreports-server

Abraço!

solução!

Segue

Pessoal, bom dia. O código abaixo roda perfeitamente, mostrando meu relatório. O problema é que no sumário do relatório eu tenho um gráfico demonstrativo que usa outro dataset no jaspersoft. Eu gostaria de saber como passar através do spring mvc esse outro dataset para meu relatório ser gerado corretamente, com o dados do relatório principal (que já funciona) e com o gráfico (que ainda não funciona, pois não consigo enviar a List que contém as informações). Fazendo os testes diretamente no jaspersoft está tudo ok. O problema é fazer essa simulação através do spring mvc, pois não consigo enviar os dados desse subdataset para gerar o gráfico.

Código do AppWebConfiguration:

    @Bean
    public JasperReportsViewResolver getJasperReportsViewResolver(){
        JasperReportsViewResolver resolver = new JasperReportsViewResolver();
        //informa a localização dos arquvios compilados
        resolver.setPrefix("/WEB-INF/views/jasper/");
        //informa a extensão do relatório a ser lido
        resolver.setSuffix(".jasper");
        //indica a fonte de dados para o relatório principal
        resolver.setReportDataKey("datasource");

              //Como eu vou enviar os dados para a geração do gráfico?

        //indica um padrão para o nome do relatório: Todos devem terminar com _report
        resolver.setViewNames("*_report");
        //essa classe permite definir o tipo de saída em tempo de execução
        resolver.setViewClass(JasperReportsMultiFormatView.class);
        resolver.setOrder(1);
        return resolver;
    }

Código do Controller...

       @RequestMapping("/relacaoProcessos")
       public String reportRelacaoProcessos(@AuthenticationPrincipal Usuario usuario, Model model,
               @RequestParam(
                       value="format",
                       defaultValue = "pdf",
                       required=false
                       )String format){

           List<Candidato> candidatos = candidatoDAO.relatorioProcessos(anoLetivo());
           List<ReportListaCandidatosProcessoDeferido> relatorioProcessosDeferidos = new ArrayList<ReportListaCandidatosProcessoDeferido>();


 //Essa List abaixo tem os dados que geraria o Gráfico. Como eu poderia passar esses dados?
           List<Candidato> candidatosGraf = candidatoDAO.somatorioPorValorBolsa(anoLetivo());



           for (Candidato candidato : candidatos){
               relatorioProcessosDeferidos.add(new ReportListaCandidatosProcessoDeferido(candidato));   
           }


           model.addAttribute("format", format);
           model.addAttribute("datasource", relatorioProcessosDeferidos);
//Eu precisaria de outro atributo para passar esse dataset do gráfico.

           model.addAttribute("anoLetivo", anoLetivo());


         return "R008_SISBS_GRAF_GERAL_report";

       }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software