关于BeanUtils.populate()抛出异常的原因及处理
/**
* 把Map中的值注入到对应的JavaBean属性中
* @param value
* @param bean
*/
public static <T> T copyParamToBean(HttpHttpRequest req, T bean){
/*
* 把所有请求参数注入bean对象中
* */
try {
BeanUtils.populate(bean,req.getParameterMap(););
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
- 表单页面中提交的数据所对应name的值和对象类中set方法后名字不一致
用户名称:<input type="text" placeholder="请输入用户名" name="username" id="username">
private String username;
public void setUsername(String username) {
this.username = username;
}
以上示例代码中,表单的name的值“name”和对象类中setUsername方法中set后”Username“相同,注,可不区分大小写
原因是因为populate()方法调用时,会将表单中name属性值前加set形成set方法,再去对象类中找到对应的方法将值注入。
- commons-beanutils-1.9.4.jar包的问题
由于表单提交时可能会缺少成员变量,populate()方法会识别错误,然后报错,目前应该是jar包bug问题,重新下1.8版本的beanutils的jar包就能解决。
以上是个人学习所作笔记,也查阅了他人经验,如有错误,感谢大佬能够请指出。