在某些动态表单的情况下,不好直接通过 get / set 的方式来给对象赋值,因为属性的名称是动态的,那么可以通过 Java 的工具类来进行这个操作:
基本思路就是把值放入 HASHMAP 当中, (name , value) 那么,BeanUtils.populate(Class, HashMap(name,value)); 就可以了。
Map baseValues = new HashMap();
for (Iterator it = baseMap.values().iterator(); it.hasNext();) {
PreceptConfigField field = (PreceptConfigField) it.next();
Object value = null;
try {
value = request.getParameter(field
.getName());
} catch (Exception e) {
String error = "投保方案读取页面基本信息出错!";
log.error(error, e);
errors.add(error);
}
baseValues.put(field.getName(), value);
}
try {
PolicyBeanUtil.populate(tScheme, baseValues);
} catch (Exception e) {
String error = "页面基本信息对象填充出错!";
log.error(error, e);
errors.add(error);
}
还有一些情况,不好直接获取 JavaBean 的值, 因为要获取的属性的名称也是动态的, 也可以通过 PropertyUtils 来达到目的 :
String value = "";
if(this.scheme != null){
Object temp = PolicyBeanUtil.getProperty(this.scheme, field.getName());
if(temp != null){
value = temp.toString();
}