2013-05-21 191 views
0

我有<String, Object>:如何設置atributes throught反射

params={ 
    dateOfBirthTo=23.05.2013, 
    lastName=bbb, ssn=aa-ccc-ddd, 
    gender=MALE, 
    dateOfBirthFrom=03.05.2013, 
    firstName=aaa 
} 

地圖然後,我有形成含有從該映射變量。我如何通過反思創建具有這個價值的新形式?

喜歡的東西:

SimpleForm form = new SimpleForm(); 

Map<String, Object> parameters = request.getParams(); 
for (Map.Entry<String, Object> entry : parameters.entrySet()) { 
    // fill form 
} 

回答

0

你可以使用Apache Commons BeanUtils

SimpleForm form = new SimpleForm(); 

Map<String, Object> parameters = request.getParams(); 
for (Map.Entry<String, Object> entry : parameters.entrySet()) { 
    BeanUtils.setProperty(form, entry.getKey(), entry.getValue()); 
} 
+0

HM漂亮和乾淨。如果它能起作用,我會。 thx很多 – hudi

+0

它應該工作,我認爲。 iirc你需要爲你想要設置的每個屬性都設置setter。 –

+0

是的,但它有效,但我有一個問題。性別在我的課是Enum沒有字符串我有異常:java.lang.IllegalArgumentException:不能調用org.sample.model.Person.setGender上的bean類'org.sample.model.Person' - 參數類型不匹配 - 有對象類型「java.lang.String」,但預期的簽名「org.sample.model.PersonGender」你知道如何解決它嗎? – hudi