Java BeanUtils - Accès aux propriétés imbriquées
La description
Vous pouvez accéder à la valeur de la propriété imbriquée du bean en concaténant les noms de propriété du chemin d'accès à l'aide de "." séparateurs.
Vous pouvez obtenir et définir les valeurs de Nested propriété en utilisant les méthodes ci-dessous:
PropertyUtils.getNestedProperty (objet, chaîne)
PropertyUtils.setNestedProperty (objet, chaîne, objet)
Paramètres:
Object: C'est un bean dont la propriété est à obtenir ou à modifier.
String: C'est un nom de la propriété imbriquée à obtenir ou à modifier.
Exemple
Dans cet exemple, vous verrez comment obtenir et définir les valeurs d'une propriété imbriquée. Nous créerons trois classes; SubBean , AppLayer1Bean pour les beans et BeanUtilsDemo comme programme principal à exécuter.
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);
}
}
}
Nous allons maintenant créer une autre classe appelée SubBean.java comme indiqué ci-dessous:
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;
}
}
Créez une autre classe AppLayer1Bean.java avec le code ci-dessous:
public class AppLayer1Bean {
private SubBean subBean;
public void setSubBean(SubBean subBean) {
this.subBean = subBean;
}
public SubBean getSubBean(){
return this.subBean;
}
}
Production
Exécutons les étapes suivantes pour voir comment fonctionne le code ci-dessus:
Enregistrez le premier code ci-dessus sous BeanUtilsDemo.java .
Maintenant, exécutez le code en utilisant l'option Exécuter ou Ctrl + f11 et la sortie comme ci-dessous s'affiche.
Signatures de méthode PropertyUtils
Les méthodes suivantes sont fournies par la classe PropertyUtils , qui accepte toutes les combinaisons arbitraires d'accès aux propriétés simples, indexées et mappées pour obtenir et définir la valeur de la propriété du bean spécifié.
PropertyUtils.getProperty (objet, chaîne)
PropertyUtils.setProperty (objet, chaîne, objet)
Paramètres:
Object: C'est un bean dont la propriété est à obtenir ou à modifier.
String: C'est un nom de la propriété indexée et / ou imbriquée à obtenir ou à modifier.
Exemple
Le programme simple suivant illustre l'utilisation des méthodes getProperty et 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;
}
}
}
Exécutez le code comme spécifié dans l'exemple ci-dessus et vous obtiendrez la sortie ci-dessous: