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: