Get Reflection

7 respostas
Licuri

Galera estou estudando reflexão pelo tutorial aqui do Guj e pelo site da Sun, e me surgiu a seguinte dúvida.
Eu consigo pegar o valor de um atributo de um TO por exemplo e setar em um outro atributo de outra classe.
Eu estou tentando desenvolver um POJO que leia os valores do meu TO e sete no meu Form.
:lol:

7 Respostas

nbluis

Qual sua dúvida?

Licuri

exemplo…

/**
	 * Método que através de reflexão monta o Form com os dados do To. 
	 * @param form
	 * @param to
	 */
	static void printFieldNames(Object form, Object to) throws Exception {
	      Class c = form.getClass();
	      //capitura os campos do form 
	      Field[] publicFieldsForm = c.getFields();
	      
	      c = to.getClass();
	      //capitura os campos do to 
	      Field[] publicFieldsTO = c.getFields();
	      
	      for (int i = 0; i < publicFieldsForm.length; i++) {
	    	  a : for(int y = 0; y < publicFieldsTO.length ; y++){
	    		  if(publicFieldsTO[y].getName().equals(publicFieldsForm[i].getName())){
	    			  System.out.println("TO value = " +  publicFieldsTO[y].get("Aqui eu gostaria de pegar o valor"));
	    			  System.out.println("TO = " +  publicFieldsForm[i].getName()); 		    			  
	    		 }
	    	 }

eu não consigo pegar os valores via reflexão do meu TO

nbluis

Ao inves de getFields, utilize o método getDeclaredFields;

Licuri

:roll: continuo na mesma.

nbluis

Blza, pensei que te dando o fio da meada tu ia.

Ai vai…

static void printFieldNames(Object form, Object to) throws Exception {
		Class c = form.getClass();
		//capitura os campos do form 
		Field[] publicFieldsForm = c.getDeclaredFields();

		c = to.getClass();
		//capitura os campos do to 
		Field[] publicFieldsTO = c.getDeclaredFields();

		Field f1;
		Field f2;
		for (int i = 0; i &lt publicFieldsForm.length; i++) {
			f1 = publicFieldsForm[i];
			f1.setAccessible(true);
			for (int y = 0; y &lt publicFieldsTO.length; y++) {
				f2 = publicFieldsTO[y];
				f2.setAccessible(true);
				if (publicFieldsTO[y].getName().equals(publicFieldsForm[i].getName())) {
					System.out.println("TO value = " + publicFieldsTO[y].get(to));
					System.out.println("TO = " + publicFieldsForm[i].getName());
				}
			}
		}
	}
Licuri

Valeu… Cara me desculpe a ignorância é que comecei a estudar reflexão ontem pelo tutorial do guj(muito bom)…

Licuri

Cara me da uma ajuda, como que eu posso fazer para resolver este problema?

public class MeuVO extends VOObject {
private String nome;
private Integer idade;
private Long cpf;
//até aqui tranquilo

//aqui é o problema
private Endereco endereco;

}

classe de endereco

public class Endereco extends VOObject {
  private String endereco;
  private String numero;
  private String bairro
}

meu form

public class MeuVO extends ActionForm {
private String nome;
private String idade;
private String cpf;


private String endereco;
private String numero;
private String bairro

}

Eu preciso pegar as das subClasse Endereco para pode setar no meu Form.

Pensei no seguinte, como todos meus vo extends VOObject poderia verificar na classe principal todos os atributos para verificar se eles a super classe VOObject o que tivesse eu varreria para pegar as informações de Endereco e setar no meu Form.

Acho que deve ter uma forma mais fácil… :roll:

Criado 3 de abril de 2007
Ultima resposta 5 de abr. de 2007
Respostas 7
Participantes 2