Adicionar Valores Para Vários Bean  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Bom pessoal,

estou tentando criar um método no qual eu preencho os dados de vários Bean de uma forma simples e flexível.

Eu estou tentando criar um método, no qual eu passo um certo Bean como Parametro e passo um HashMap contendo os valores, como por exemplo:

esse HashMap poderia representar um Cliente no sistema por exemplo.
Eu passaria esse HashMap e a meu bean, no caso Clientes para o método e ele preencheria os valores automaticamente.
O Algoritmo é mais ou menos assim.
Quando o método for invocado, utilizará reflection na classe que fosse passado como Parâmetro, verificará todos os atributos e e seus métodos (getters e setters), irá comparar os valores do HashMap com o nome do atributo, e utilizar o setXXX(map.get(objeto));

Pegar os valores via reflection sem problemas, isso o método já está fazendo, o problema é quando eu tento criar esse método genérico para todos os meus Bean, na assinatura do meu método, não posso por minha classe direto, e sim uma superclasse de todos meus bean, no caso eu utilizei Object, algo como:

Pois vou utilizar isso tanto para um Bean Clientes, como outro Produtos, outro Funcionarios e assim vai...
A pergunta é...
como dentro do método addValuesToBean, eu vou utilizar os métodos setXXX()?, já que no Object não possui esses métodos? Por exemplo:, supondo que estou com o Clientes, e o Clientes tem o setNome(), eu capturei o método setNome via reflection (até aqui eu consegui fazer na programação), como eu vou poder utilizá-lo?queria algo mais ou menos assim:

o method.getName(), seria algo como "setNome...."

Tem algum modo de conseguir utilizar um método de uma classe que eu capturei via reflection?

Espero que a pergunta fique clara.

Obrigado

Junior

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Vou responder correndo, se precisar de mais ajuda da um toque:

- De uma olhada na API java.beans, especialmente nos PropertyEditors.
- Commons-BeanUtils da Jakarta ja tem isso que vc quer fazer.
- foo.getClass().getDeclaredMethod("nomeDoMetodo", new Class[]);
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
danccar
Smalltalk

Membro desde: 27/10/2004 11:57:44
Mensagens: 2
Offline

Este método "addValuesToBean(Clientes,map);" foi vc q implementou ou o java tem isto?!



ManchesteR wrote:Bom pessoal,

estou tentando criar um método no qual eu preencho os dados de vários Bean de uma forma simples e flexível.

Eu estou tentando criar um método, no qual eu passo um certo Bean como Parametro e passo um HashMap contendo os valores, como por exemplo:

esse HashMap poderia representar um Cliente no sistema por exemplo.
Eu passaria esse HashMap e a meu bean, no caso Clientes para o método e ele preencheria os valores automaticamente.
O Algoritmo é mais ou menos assim.
Quando o método for invocado, utilizará reflection na classe que fosse passado como Parâmetro, verificará todos os atributos e e seus métodos (getters e setters), irá comparar os valores do HashMap com o nome do atributo, e utilizar o setXXX(map.get(objeto));

Pegar os valores via reflection sem problemas, isso o método já está fazendo, o problema é quando eu tento criar esse método genérico para todos os meus Bean, na assinatura do meu método, não posso por minha classe direto, e sim uma superclasse de todos meus bean, no caso eu utilizei Object, algo como:

Pois vou utilizar isso tanto para um Bean Clientes, como outro Produtos, outro Funcionarios e assim vai...
A pergunta é...
como dentro do método addValuesToBean, eu vou utilizar os métodos setXXX()?, já que no Object não possui esses métodos? Por exemplo:, supondo que estou com o Clientes, e o Clientes tem o setNome(), eu capturei o método setNome via reflection (até aqui eu consegui fazer na programação), como eu vou poder utilizá-lo?queria algo mais ou menos assim:

o method.getName(), seria algo como "setNome...."

Tem algum modo de conseguir utilizar um método de uma classe que eu capturei via reflection?

Espero que a pergunta fique clara.

Obrigado

Junior
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team