Como usar bean composto no JasperReport?

Olá,

Sei exibir no JasperReport meus dados quando os benas são simples. Mas não estou conseguindo quando o bean tem uma classe dentro da outra. Por exemplo

public Pessoa; private String nome; private Endereco endereco; ...

Crio o campo para umaPessoa.nome dentro do iReport, mas não sei criar para umaPessoa.endereco.rua;

Alguém me ajuda?

Márcio

Vc pode tipar os seus objetos dentro do Jasper… Basta que sua classe esteja no classpath…

Exemplo:

public class Pessoa{
   
   Endereco endereco;
    
    public Endereco getEndereco(){ ... } 
}
public Endereco{
   
   String rua;

    public String getRua(){ ... } 
}

Ficaria assim:

Imaginando que você tem uma coleção de Pessoa, ficaria assim

((Endereco)$F{endereco}).getRua();

Acho que deu pra sacar neh??? QQ coisa posta ai …

Abraços

Estou tentando compilar um relatorio no Ireport…

Tenho um Bean onde um dos seus atributos eh outro Bean, ex:

[code]Class Comensal{
ComensalId comensalid;

     getComensalId() { ... }

}

Class ComensalId{
String Matricula;

     getMatricula() { ... }

}[/code]

Quero entao acessar o atributo Matricula, utilizando no Ireport
((ComensalId)$F{comensalid}).getMatricula()

E quando COMPILO para gerar o .jasper o ireport me da o seguinte ERRO:
Compiling to file… P:\RU\SCR\Reports\Residentes.jasper ->
P:\RU\SCR\Reports\RelModelo.java Errors compiling P:\RU\SCR\Reports\Residentes.jasper! P:\RU\SCR\Reports\RelModelo.java:94: cannot access ComensalId
bad class file: C:\report\ComensalId.class
class file contains wrong class: SCR.scrbeans.ComensalId
Please remove or make sure it appears in the correct subdirectory of the classpath.
value = (java.lang.String)(((ComensalId)((java.lang.Object)field_comensalid.getValue())).getMatricula()); ^ 1 error net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: See error messages above. at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.compileReport(JRAbstractJavaCompiler.java:155) at net.sf.jasperreports.engine.design.JRDefaultCompiler.compileReport(JRDefaultCompiler.java:137) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:142) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:130) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:336) at java.lang.Thread.run(Unknown Source)

Obs: Eu coloquei a classe no ClassPath.

Alguem ja passou por erro semelhante ou sabe como resolve-lo?

Qualquer ajuda sera util e bem-vinda.

Obrigado.

Glaudison

Olá pessoal, estou com o mesmo problema! Não consigo utilizar classes com associações… Conseguiram resolver?

Olá,

estou tentando acessar um objeto List com meus objetos, porém para montar cada gráfico preciso pegar um desses objetos. Como eu consigo acessar o objeto para passá-lo para as propriedades do grafico?

[quote=felipecaparelli]Olá,

estou tentando acessar um objeto List com meus objetos, porém para montar cada gráfico preciso pegar um desses objetos. Como eu consigo acessar o objeto para passá-lo para as propriedades do grafico?[/quote]

Vc quer acessar um objeto através da lista? ex:

No java

public class ClasseA{
private List<ClasseB> listClasseB;
//+ metodos encapsuladores

}

public classe ClasseB{
private idB;
//+ metodos encapsuladores

}

No iReport vc seta o classtapath com os arquivos compilados .class manda Ler os atributos e depois vc vai selecionado e adicionando os campos selecionados ao selecionar o campo listClasseB; vc edita a expressao dele e peça para atribuir o valor q vc quer da classe B.

ex:

""+$F{listClasseB}.idB()

Na realidade estou tentando acessar um List que passei como parametro - $P{listaDeObjetos} - diretamente no iReport. No java para eu acessar cada elemento do List eu tenho que fazer:

List<Objeto>lista = new ArrayList<Objeto>();
lista.add(new Objeto());
lista.get(i); // o i indica a posição, ded 0 até a última do List. Que é na realidade algo que eu preciso lá no jasper para poder pegar os objetos e assim poder acessar seus atributos.

tem alguma forma de fazer isso? ou tem um jeito mais fácil?

[quote=felipecaparelli]Na realidade estou tentando acessar um List que passei como parametro - $P{listaDeObjetos} - diretamente no iReport. No java para eu acessar cada elemento do List eu tenho que fazer:

List<Objeto>lista = new ArrayList<Objeto>();
lista.add(new Objeto());
lista.get(i); // o i indica a posição, ded 0 até a última do List. Que é na realidade algo que eu preciso lá no jasper para poder pegar os objetos e assim poder acessar seus atributos.

tem alguma forma de fazer isso? ou tem um jeito mais fácil?[/quote]

Olá.
Essa sua lista são os dados que deve ser iterados?
Se sim, você pode fazer assim?

JasperRunManager.runReportToPdf(relatorioJasper, parametros, new JRBeanCollectionDataSource(listaDeObjetos));

Se for esse o seu problema, basta procurar aqui no forum sobre JRBeanCollectionDataSource.

[]'s
JL

obrigado… vou tentar dessa forma então.

Bom dia.
estou com com um problema

no caso… do amigo acima… era pegar um valor de um atributo que do tipo objeto

e se nesse valor q eu pegar for um outro objeto e querer esse valor ? como faço ?
estou tentando assim:

color=blue.getUnidade()[/color]

e esta disparando isso:
[color=red]net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. The type Persistence.Unidades cannot be resolved. It is indirectly referenced from required .class files " - "+ ((Unidades)((Servicos)((java.lang.Object)field_servicosIdservicos.getValue())).getUnidadesIdunidades()).getUnidade());[/color]

como resolvo isso ?

abs

ahh consegui…

quando coloquei meu objetos na pasta do ireport
nao coloquei com o pacote!
agora coloi a pasta toda com os objetos
e quando vou chamar agora faço assim:

((Objetos.Unidades)((Objetos.Servicos)$F{servicosIdservicos}).getUnidadesIdunidades()).getUnidade()

show de bola !!!

olá. estou com o mesmo problema q vcs estavam…

Estou pegando a minha lista de objetos da seguinte maneira:

((AverbacaoVO)((java.util.List)$P{listaAverbacoes}).get(0)).getNome1()

mas se eu nao o usar o get(index) pra pegar uma posição realtiva , eu não estou conseguindo pegar todas as posicoes sem indexa-la;

alguem sabe como fazer??

oi sidnelsom

vc quer interar sua lista de objetos ? é isso ?

se for isso… vc tem que clicar la na barra de menu… na opção de dados lá (nao lembro o nome)
e escolher outra forma de interação de dados…
ai vc coloca sua LIST la… e pronto

se nao conseguir… posta dinovo que eu explico com mais detalhes

abraço

Alo galera.

Estou aprendendo a fazer relatorios com o iReport, no entanto o tutorial que segui (http://javafree.uol.com.br/artigo/871484/Relatorios-com-iReport.html) cria-se o ficheiro .jasper consoante os campos da base de dados, mas o meu problema é o seguinte:

Tenho um view na base de dados e de la eu pego alguns dados que depois de manipulados vao para uma tabela e sao mostrados na tela (estou usando o zk), e eu quero pegar os dados dessa tabela e fazer um relatorio em pdf, ou seja, apresentar um tabela semelhante mas em forma de relatorio PDF.

Peço ajuda, ou se puderem indicar um link onde poderei encontrar o que quero.

Valeu!

Fala Galera,

Sei que faz tempo este post…Mas alguem poderia me ajudar com algo parecido que vc estava discutindo ?

Tenho minha classe assim :

    public class ClasseA{ 
      
      private beanA;
      private baanB;
      private List<ClasseB> listClasseB;
      private List<ClasseC> listClasseC;

      // Gets e Sets

    }  

Eu já acesso nesta classe os beans assim $F{beansA}.getCampo1()
Porem proceiso acessar as lista… Ja temtei algo parecido $F{listClasseB}.getCampo1(), porem nao acessa da erro.

Alguem sabe como fazer para acessar a lista ?

Obrigado,
Rodrigo