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