Olá,
já procurei de todo jeito e não consigo encontrar referências ao uso de Jakarta BeanUtils para acesso a atributos privados. Suspeito que não haja suporte a isto. Alguém sabe com certeza?
Obrigado,
Rodrigo
Olá,
já procurei de todo jeito e não consigo encontrar referências ao uso de Jakarta BeanUtils para acesso a atributos privados. Suspeito que não haja suporte a isto. Alguém sabe com certeza?
Obrigado,
Rodrigo
Na documentação ele diz que é necessário haver o setter e/ou o getter. Se o atributo é privado ou não, não importa, porque ele não pega os atributos e sim chama os setters e/ou getters.
Typically, each bean property will have a public getter and setter method that are used to retrieve or define the property's value, respectively. The JavaBeans Specification defines a design pattern for these names, using get or set as the prefix for the property name with it's first character capitalized. Thus, you a JavaBean representing an employee might have (among others) properties named firstName, lastName, and hireDate, with method signatures like this:public class Employee {
public Employee(); // Zero-arguments constructor
public String getFirstName();
public void setFirstName(String firstName);
public String getLastName();
public void setLastName(String lastName);
public Date getHireDate();
public void setHireDate(Date hireDate);
public boolean isManager();
public void setManager(boolean manager);
public String getFullName();
}
O BeanUtils não usa api de Reflection, mas sim a de Introspection, o que gera esse tipo de limitação.
Se você precisa mesmo fazer isso, pode usar Reflection mesmo:
Field field = klass.getDeclaredField( "myPrivateField" );
field.setAccessible( true );
Object value = field.get( myPopulatedObject );
Obrigado thingol e LIPE!
Quanto ao uso de setAcessible, já o utilizei em alguns pontos. O lance com BeanUtils era não reinventar a roda, mas não há jeito mesmo.
Valeu,
Rodrigo
Não precisa reinventar a roda 
http://www.koders.com/?s=ReflectionUtils&%3Abtn=Search&%3Ala=&_%3Ali=
De qualquer maneira, por que é que você tem de acessar um atributo privado (fora o fato de que você não está podendo mexer no código original , que é provavelmente a sua motivação? )
Se esse tipo de coisa está ocorrendo, há algo errado na arquitetura do sistema.