iReport + List

Olá,
Sou principiante em Java e tenho que mostrar em um relatório um List que está em uma session, será que alguem poderia me ajudar com o iReport, o problema é passar um List para o iReport e exibir os campos deste list.

Se alguem puder me ajudar antecipadamente agradeço.

Defina o seu DataSource assim:

JRBeanCollectionDataSource ds; ds = new JRBeanCollectionDataSource(request.getSession().getAttribute("seuListaDaSession"));

Se precisar de mais informações, faz um busca por “JRBeanCollectionDataSource” :wink:

Valeu pela dica, obrigado

E ai galera tudo ok…

Estou com um pequeno problema com o IReport, se alguem puder me ajudar fico muito agradecido.

Meu problema e em relação a passagem de um ArrayLista para o relátorio.
Segue o Problema

Tenho as Seguintes classes;

// Classe dos titulares
class Titular{
String nome;
Integer idade;
ArrayList dep = new ArrayList();

Titular(String n, Integer i){
nome = n;
idade = i;
dep.add(new Dependente(“Gustavo”, “M”, 20));
dep.add(new Dependente(“Wellington”, “M”, 30));
dep.add(new Dependente(“Jamilson”, “M”,20));
dep.add(new Dependente(“Izabel”, “S”, 45));
}

public ArrayList get(){
return dep;
}
}

Classe dos dependentes
class Dependente{
private String nome_dep;
private String sexo;
private int idade;

Dependente(String n, String s, int i){
nome_dep = n;
sexo = s;
idade = i;

}

public void setSexo(String s){
sexo = s;
}

public String getSexo(){
return sexo;
}

public void setNome_Dep(String n){
nome_dep = n;
}

public String getNome_Dep(){
return nome_dep;
}

public void setIdade(int n){
idade = n;
}

public int getIdede(){
return this.idade;
}
}

// Classe referente ao relatório
public class RelatorioArrayList {

/**

  • @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    new RelatorioArrayList().geraRelatorio();

}

public void geraRelatorio(){
Titular t = new Titular(“Jamiro”, 5;

ArrayList dep = t.get();

System.out.println(((Dependente)dep.get(1)).getNome_Dep());

Map parametros = new HashMap();
parametros.put(“nome”, t.nome);
parametros.put(“idade”, t.idade);

try {
// Objeto com arrayList
JRBeanCollectionDataSource BCD = new JRBeanCollectionDataSource(dep);

parametros.put(“dep”, BCD);

JREmptyDataSource ED = new JREmptyDataSource();

// Compila Relatório
JasperReport jasperReport = JasperCompileManager.compileReport("/Java/Workspace/reports/Rel_ArrayList.jrxml");

// Preenche relatório
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, ED);

JasperViewer.viewReport(jasperPrint, true);

} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception f) {
// TODO Auto-generated catch block
f.printStackTrace();
}
}
}

IReport

No Relatório principal:
Criei três parâmetro:
nome java.lang.String
idade java.lang.Integer
dep java.lang.Object

Cofigureio subreport da seguinte maneira:

Subrelatorio:
Expressão de Conexão/Fonte de dados
USAR UM DATA SOURSE
$P{dep}

Sub-Relatório(outros)
Coloquei o path do meu relatório: “C:\Java\Workspace\Reports\RelSub_ArrayList.jasper”

No Sub Relatório:
Crie um fild:
nome_dep java.lang.String

Quando executo meu código (ECLIPSE) o seguinte erro é apresentado:

java.lang.NoSuchMethodException: Unknown property ‘nome_dep’

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : nome_dep

Não coloquei toda a descrição dos erros por questão de espaço.
Alguém pode me ajudar com isso?
Obrigado