Java BeanUtils - доступ к вложенным свойствам
Описание
Вы можете получить доступ к значению вложенного свойства bean-компонента, объединив имена свойств пути доступа с помощью "." разделители.
Вы можете получить и установить значения Nested свойство, используя следующие методы:
PropertyUtils.getNestedProperty (объект, строка)
PropertyUtils.setNestedProperty (объект, строка, объект)
Параметры:
Object: Это bean-компонент, свойство которого необходимо получить или изменить.
String: Это имя вложенного свойства, которое нужно получить или изменить.
пример
В этом примере вы увидите, как получить и установить значения вложенного свойства. Мы будем создавать три класса; SubBean , AppLayer1Bean для beans и BeanUtilsDemo в качестве основной программы для запуска.
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);
}
}
}
Теперь мы создадим еще один класс с именем SubBean.java, как показано ниже:
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;
}
}
Создайте еще один класс AppLayer1Bean.java вместе с приведенным ниже кодом:
public class AppLayer1Bean {
private SubBean subBean;
public void setSubBean(SubBean subBean) {
this.subBean = subBean;
}
public SubBean getSubBean(){
return this.subBean;
}
}
Вывод
Выполним следующие шаги, чтобы увидеть, как работает приведенный выше код:
Сохраните первый код выше как BeanUtilsDemo.java .
Теперь выполните код, используя параметр «Выполнить» или Ctrl + f11, и отобразится вывод, как показано ниже.
Сигнатуры метода PropertyUtils
Следующие методы предоставляются классом PropertyUtils , который принимает любые произвольные комбинации простого, индексированного и сопоставленного доступа к свойствам для получения и установки значения свойства указанного bean-компонента.
PropertyUtils.getProperty (объект, строка)
PropertyUtils.setProperty (объект, строка, объект)
Параметры:
Object: Это bean-компонент, свойство которого необходимо получить или изменить.
String: Это имя индексированного и / или вложенного свойства, которое необходимо получить или изменить.
пример
Следующая простая программа иллюстрирует использование методов getProperty и 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;
}
}
}
Запустите код, как указано в приведенном выше примере, и вы получите следующий результат: