2009-08-25 4 views
3

Comment puis-je utiliser la méthode BeanUtils setProperty avec Maps.BeanUtils avec Maps

Par exemple, cette méthode: public void setAddress (type de chaîne, adresse); Peut être défini à l'aide de: BeanUtils.setProperty (beanObject, "address (home)", addressObject);

Mais si l'objet que je veux définir est une carte, est-ce possible? Comment?

+1

C'est ce que le guide de l'utilisateur BeanUtils dit: "Comme une extension de l'API JavaBeans standard s, le package BeanUtils considère toute propriété dont la valeur sous-jacente est java.util.Map comme étant "mappée". Vous pouvez définir et récupérer des valeurs individuelles via une clé de type String. " Mais je ne sais pas comment le faire fonctionner avec un HashMap avec une méthode set (k, v) – fmaste

Répondre

2

Utilisez la syntaxe de la carte foo(bar) (bar est la clé de la carte foo):

public static class Bean{ 
    private Map<String, String> data = new HashMap<String, String>(); 
    public Map<String, String> getData(){ 
     return data; 
    } 
    public void setData(final Map<String, String> data){ 
     this.data = data; 
    } 
} 

public static void main(final String[] args) throws Exception{ 
    final Bean bean = new Bean(); 
    // assign the foo key of the data property to the value 'bar' 
    BeanUtils.setProperty(bean, "data(foo)", "bar"); 
    System.out.println(bean.data); 
} 

Sortie:

{foo = bar}