Como utilizar lista java como parâmetro no iReport

Neste artigo iremos apresentar como utilizar lista do java como parâmetro no iReport. Let’s go.

Criando lista no java

Primeiro passo é criar sua lista com seus objetos. Feito isto é necessário criar um JRBeanCollectionDataSource passando como parâmetro sua lista de objetos criada.

JRBeanCollectionDataSource itemsJRBean = new JRBeanCollectionDataSource(lista);

Agora vamos criar um mapa de String/Objeto para enviar parâmetros para o iReport.

Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("LISTA", lista);

Então é só enviar o mapa quando for compilar o relatório

 JasperPrint jasperPrint = JasperFillManager.fillReport("/relatorio.jrxml", parametros, new JREmptyDataSource());

Obtendo parâmetro no iReport

Com a parte do java já configurado, é necessário criar um “Parameters” no iReport para obter o parâmetro enviado do java. Então crie um novo parâmetro com o mesmo nome criado na lista de parâmetros enviados pelo java.

Name: LISTA
Class: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

Criando dataset com uma tabela

Crie uma nova tabela e selecione “just create an empty table”, selecione seu estilo e clique em finalizar.

Agora precisamos definir uma expressão JRDatasource para que o dataset da tabela tenha acesso as variáveis do objeto enviado como parâmetro. Para isto clique com o botão direito sobre a tabela e selecione “Edit table datasource”. No lugar de:

new net.sf.jasperreports.engine.JREmptyDataSource(1)

Substitua pelo código abaixo (utilize o mesmo nome do parâmetro criado no iReport):

$P{LISTA}

Criando fields da tabela

Acesse o dataset criado para a tabela e crie os campos com o nome e tipo correspondentes ao modelo java.

Dúvidas?

Você tem outras dúvidas? O tutorial não funcionou? Deixe seu feedback nos comentários abaixo. Bom, espero que essa dica tenha sido útil.