ArrayList iReport [RESOLVIDO]

Bom dia

Estou criando um relatorio, faço a conexão desse relatorio com JRBeanCollectionDataSource, e estou passando uma lista que contém meus campos, até aí tudo bem, se eu jogar os meus campos diretamente no relatorio, funciona, apresenta os valores e tudo mais.

O meu problema está quando tenho um campo que é um ArrayList dentro da minha classe a estrutura que estou passando como “base de dados” no caso uma coleção seria assim:

public class Tags implements Serializable {

    private XMLIde ide = new XMLIde();
    private Complemento compl = new Complemento();
    private Emitente emit = new Emitente();
    private Expedidor exp = new Expedidor();
    private Recebedor receb = new Recebedor();
    private Remetente rem = new Remetente();
    private Destinatario dest = new Destinatario();
    private ValorPrestacaoServico vprest = new ValorPrestacaoServico();
    private Impostos imp = new Impostos();
    private InformacoesCTe inf = new InformacoesCTe();
    private FaturamentoVeic fat = new FaturamentoVeic();
}

Pegando o exemplo do campo vprest a classe ValorPrestacaoServico está estruturada assim:

public class ValorPrestacaoServico {

    private String vTPrest = "";
    private String vRec = "";
    private ArrayList<ComponentPrestacao> Componente = new ArrayList();
}

o campo Componente é um ArrayList

Como faço para listar esses valores dentro do iReport?

por exemplo, hoje no meu iReport para campos normais, eu passo $F{vprest}.getvRec()

Se alguém puder me dar uma ajuda, estou realmente precisando terminar isso o quanto antes

Obrigado

Alguma ajuda?!?!?

Pessoal, alguém sabe como faço para conseguir pegar esses dados de um campo ArrayList?

Obrigado

Bom depois quebrar a cabeça e sem ninguem responder o post, consegui resolver.

A solução é simples mas não muito logica, pois você em modo de desenvolvimento não consegue “ver” o funcionamento, mas enfim, vamos lá.

Na atual situação onde eu tenho um ArrayList dentro de uma classe chamada por outra classe é possível sim conseguir pegar esses dados e imprimir.
Para isso é necessário criar um subReport.

Passos:

1 - Relatorio principal: Cria um parametro [nome_que_desejar] mas com o tipo de dados java.long.Object

2 - Passe um parametro para sua chamada do relatorio:

JRDataSource dsComponente = new JRBeanCollectionDataSource(tags.getVprest().getComponente());
Map<String, Object> map = new HashMap<String, Object>();
map.put("componentes", dsComponente);

3 - Feito isso, Criei um SubReport, esse pode ser um subReport novo ou já existente, funciona igual

4 - Na etapa de Conexão por Expressão, marque Use a JRDatasource Expression

5 - Selecione o parametro que voce criou (java.long.Object)

6 - Vá ate seu SubReport e crie manualmente os campos que estão na tua classe, ou no caso, que formam seu objeto que é um ArrayList

Feito isso é so executar o report e ver se está tudo certo.

Espero que ajude alguém…

2 curtidas