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???
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?
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
jerrymagal
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
jerrymagal
coloquei produtoFarmaceutico.descricaoProdutoFarmaceutico e funcionou.