Java BeanUtils - Acceso a propiedades anidadas
Descripción
Puede acceder al valor de la propiedad anidada del bean concatenando los nombres de propiedad de la ruta de acceso utilizando "." separadores.
Puede obtener y establecer los valores de Nested propiedad utilizando los siguientes métodos:
PropertyUtils.getNestedProperty (objeto, cadena)
PropertyUtils.setNestedProperty (objeto, cadena, objeto)
Parámetros:
Object: Es un bean cuya propiedad se va a obtener o modificar.
String: Es un nombre de la propiedad anidada a obtener o modificar.
Ejemplo
En este ejemplo, verá cómo obtener y establecer los valores de la propiedad anidada. Crearemos tres clases; SubBean , AppLayer1Bean para beans y BeanUtilsDemo como programa principal para ejecutar.
import org.apache.commons.beanutils.PropertyUtils;
public class BeanUtilsDemo {
public static void main(String args[]){
try{
// create the bean
AppLayer1Bean nested = new AppLayer1Bean();
// set a SubBean which is part of another bean
SubBean sb = new SubBean();
sb.setStringProperty("Hello World from SubBean");
nested.setSubBean(sb);
// accessing and setting nested properties
PropertyUtils.setNestedProperty(
nested, "subBean.stringProperty",
"Hello World from SubBean, set via Nested Property Access");
System.out.println(
PropertyUtils.getNestedProperty(nested, "subBean.stringProperty"));
}
catch(Exception e){
System.out.println(e);
}
}
}
Ahora crearemos otra clase llamada SubBean.java como se muestra a continuación:
public class SubBean {
private int intProperty;
private String stringProperty;
public void setIntProperty(int intProperty) {
this.intProperty = intProperty;
}
public int getIntProperty() {
return this.intProperty;
}
public void setStringProperty(String stringProperty) {
this.stringProperty = stringProperty;
}
public String getStringProperty() {
return this.stringProperty;
}
}
Cree una clase más AppLayer1Bean.java junto con el siguiente código:
public class AppLayer1Bean {
private SubBean subBean;
public void setSubBean(SubBean subBean) {
this.subBean = subBean;
}
public SubBean getSubBean(){
return this.subBean;
}
}
Salida
Realicemos los siguientes pasos para ver cómo funciona el código anterior:
Guarde el primer código anterior como BeanUtilsDemo.java .
Ahora ejecute el código usando la opción Ejecutar o Ctrl + f11 y se mostrará la salida como se muestra a continuación.
Firmas del método PropertyUtils
Los siguientes métodos son proporcionados por la clase PropertyUtils , que acepta cualquier combinación arbitraria de acceso de propiedad simple, indexado y mapeado para obtener y establecer el valor de la propiedad del bean especificado.
PropertyUtils.getProperty (objeto, cadena)
PropertyUtils.setProperty (objeto, cadena, objeto)
Parámetros:
Object: Es un bean cuya propiedad se va a obtener o modificar.
String: Es un nombre de la propiedad indexada y / o anidada que se va a obtener o modificar.
Ejemplo
El siguiente programa simple ilustra el uso de los métodos getProperty y setProperty:
import org.apache.commons.beanutils.PropertyUtils;
public class PropertyUtilsTest {
public static void main(String args[]){
try{
Tv Color = new Tv();
PropertyUtils.setProperty(Color, "color", "Black");
String value = (String) PropertyUtils.getProperty(Color, "color");
System.out.println("The color value of Tv is: " + value);
}
catch(Exception ex){
ex.printStackTrace();
}
}
public static class Tv{
private String color;
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
}
}
Ejecute el código como se especifica en el ejemplo anterior y obtendrá el siguiente resultado: