estou com um problema e ja vi varios topicos sobre o assunto, mas o meu relatorio nao funciona de jeito nenhum, vamos lá.
estou usando o netbeans 6.5.1 junto com o plugin do irepot 3.5.1
Bom tenho uma bean chamada Pessoas e outra chamada PessoasVendedor
public class Pessoas implements Serializable {
private String codigo;
private String nome;
blalbalbalbalba....
private PessoasVendedor pessoasVendedor;
/*aki os get e set ...*/
}
Classe PessoasVendedor:
public class PessoasVendedor implements Serializable {
private int idPessoaVendedor;
private String apelidoPessoaUsuario;
/*aki os get e set ...*/
}
na classe q monta meu relatorio passo uma lista com objeto ja setado…
// -> O datasource que recebe um objeto.
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(lista);
ate entao tudo funciona perfeitamente se eu usar so os fields no jasper de do beans Pessoas
ex: $F{nome} , $F{codigo},
agora qd tento acessar o PessoasVendedor nao consigo de maneira alguma
gostaria de saber como sertano classpath do ireport a beans.PessoasVendedor
e como fikaria seria alguma coisa $F{Pessoas}.getIdPessoaVendedor() ou $F{idPessoaVendedor}
Olá Liviaguedes.
Bem, se você já conseguiu ler os atributos da classe, é porque o iReport já entedeu a classe PessoasVendedor.
E sobre acessar as propriedades do objeto, faça assim:
É estranho isso, pq como a aplicação carrega o .jasper, então têm o mesmo classloader…me corrijam se estiver errado. Nunca fiz com netbeans…sempre utilizei o ireport separado com eclipse…mas o ireport utilizo apenas para fazer o layout do relatório…Talvez o problema esteja no plugin…
se eu faço um field: PessoasVendedor
Filed Class: java.lang.Object
ele nao reconhece esse field:
$F{PessoasVendedor}.getApelidoPessoaUsuario()
[quote]ERRO:
The method getApelidoPessoaUsuario() is undefined for the type Object
[/quote]
SE EU MUDO::
se eu faço um field: PessoasVendedor
Filed Class: beans.PessoasVendedor
ele continua nao reconhecendo esse field:
$F{PessoasVendedor}.getApelidoPessoaUsuario()
[quote]ERRO:
The method getApelidoPessoaUsuario() is undefined for the type Object
[/quote]
e ainda da + um erro:
[/quote]
Bem, vamos por partes.
Quando você faz um relatórios com Beans, você acessa as propriedades dos objetos que compoem a lista.
Voltando ao primeiro post desse tópico.
public class Pessoas implements Serializable {
private String codigo;
private String nome;
blalbalbalbalba....
private PessoasVendedor pessoasVendedor;
/*aki os get e set ...*/
}
O nome da propriedade da classe é pessoasVendedor, e não PessoasVendedor com descrito em:
Troque o $F{PessoasVendedor}.getApelidoPessoaUsuario() por $F{pessoasVendedor}.getApelidoPessoaUsuario(), com “p” minusculo, igual o nome da propriedade da classe.
Conseguir acessar os atributos de outra classe dessa forma:
Classe Pessoa:
public class Pessoas implements Serializable {
private String codigo;
private String nome;
private PessoasFaturamento pessoasFaturamento;
// get e set..
}
Classe PessoasFaturamento:
public class PessoasFaturamento implements Serializable {
private int idVendedor;
private String nomeVendedor;
// get e set..
}
Dentro do irport:
$F{pessoasFaturamento.nomeVendedor}
UMA OBS MUITO IMPORTANTE:
tipo Expression Class: java.lang.String
nao utilizei nenhum campo como Object nem nd, pq vi muito nos foruns e me apeguei muito a isso… e no fim era mais simple q imaginei…