2013-02-22 50 views
1

我當前的應用要求使用這種功能從http請求填寫一個簡單的Java OBJET:填充的HashMap中客體從BeanUtilsBean

// request is an instance of org.apache.catalina.connector.RequestFacade 
// myObject is an instance of MyBusinessDTO 
org.apache.commons.beanutils.BeanUtilsBean.populate(myObject, request.getParameterMap()); 

它非常適用於幾乎所有的用例,但我還是被卡住用一個,從我的請求參數中填入HashMap。

我要填寫看起來像OBJET:

public class MyBusinessDTO extends BusinessDTO 
{ 

    private Map<String, Object> listeFormsChecked = new HashMap<String, Object>(); 


    /** 
    * @return the listeFormsChecked 
    */ 
    public Map<String, Object> getListeFormsChecked() 
    { 
     return listeFormsChecked; 
    } 



    /** 
    * @param listeFormsChecked the listeFormsChecked to set 
    */ 
    public void setListeFormsChecked(Map<String, Object> listeFormsChecked) 
    { 
     this.listeFormsChecked = listeFormsChecked; 
    } 
} 

我已經嘗試了我的要求,如:

  • prefixPath.myBusinessDTOAttribute.key =值
  • prefixPath.myBusinessDTOAttribute [關鍵] =值

但他們都沒有工作。

這甚至可能嗎?如果是,如何?

不管怎樣,謝謝:)

回答

0

不是100%肯定,和我剛開始我的腳溼過的BeanUtils,但是從的javadoc這聽起來像你的想法是不支持:

「這方法使用Java反射API來標識相應的「屬性設置器」方法名稱,並且處理類型爲String,boolean,int,long,float和double的設置器參數 array這些類型的設置器(或相應的原始類型)也可以被識別「。

所以,數組,但沒有地圖。

但是你可以嘗試使用兩個synchronized(不在java中)數組,並且使用beanutils獨立地在單獨的變量中設置這兩個參數 - 如果你的鍵是一個擁有自己的getter和setter的數組, vals將是第二個擁有自己的getter和setter的數組,然後你可以在bean中有一個實用方法來自動將它們合併到一張地圖中。