iReport + List

3 respostas
maugloju

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.

3 Respostas

andre_a_s

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:

maugloju

Valeu pela dica, obrigado

G

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

Criado 24 de agosto de 2007
Ultima resposta 20 de ago. de 2008
Respostas 3
Participantes 3