Parâmetro Ireport

6 respostas
J

Preciso passar um List por parâmetro para o ireport, lista essa que será usada em um subreport.

No ireport eu crio um novo parâmetro no master e nomeio com o mesmo nome passado no map.

map.put("listaTeste", lista) $P{listaTeste}

Em seguida crio um subreport e dou um new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource((java.util.List)$P{listaTeste}) no data source expression.

Agora como faço para pegar os valores dessa lista???

Estou usando o ireport 3.7.6

Obrigado desde já

6 Respostas

leoramos

Dentro do subreport (que é outro arquivo .jrxml) vais incluir os fields referentes aos objetos dentro dessa lista.
Essa listaTeste guarda o que?
Basicamente, é isso.

Mas qual a real necessidade de usares um subReport?

J

Leo,

essa lista é do tipo EstoqueEspecial

public class EstoqueEspecial{

         private ProdutoFarmaceutico medicamento;
         private Long quantidadeMinima;
         private Long quantidadeMaxima;
}

public class ProdutoFarmaceutico{

         private String descricao;
}

eu quero pegar a descricao do medicamento, bem como as quantidades do estoque.

leoramos

Cara, ele pega o valor dos fields pelo get, por reflection.
Então, vai ser o seguinte:

Não tá “certo”, tá quebrando um pouco o encapsulamento da coisa. Mas ou tu faz isso, ou tu vais ter que criar um bean só pra isso.
Cria, na classe EstoqueEspecial, isso:

public String getDescricaoMedicamento { return this.medicamento.getDescricao(); }
E cria no teu subReport um field “descricaoMedicamento”.

Entendeu a ideia do negócio?

Abraço!

J

Mas se eu colocar getMedicamento().getDescricao()???

leoramos

Aí é que tá, de dentro do relatório não tens acesso a estes métodos.
Ele busca um método get pelo nome do field.
Segue ali o que eu te falei, que tá tranquilo =)

J

coloquei produtoFarmaceutico.descricaoProdutoFarmaceutico e funcionou.

Vlwww

Criado 14 de junho de 2011
Ultima resposta 15 de jun. de 2011
Respostas 6
Participantes 2