我遇到的这种情况是由于获取到的属性名和自己定义封装的类的属性值不一致导致的。
比如:在一个html的页面中,提交的表单数据有 username 和 password 两个数据,这时候用于封装的类 的属性名 必须和要获取的用于封装的属性保持一致 也就是类中定义的属性要为 username和 password。
如果不这样做,那么使用BeanUtils.populate()封装时,里面的键值对就为null
代码示例:
html:
<form action="loginServlet" method="post">
<div>
<span>用户名:</span><input type="text" name="username"><br>
</div>
<div>
<span>密 码:</span><input type="password" name="password">
</div>
<div id="btn">
<div id="sub">
<input type="submit" name="提交" id="submit">
</div>
</div>
用于封装的user类:
private String username;
private String password;
封装代码:
Map<String, String[]> map= req.getParameterMap();//这里从表单中获取到的username和password
//要和user类中的相对应,不然的话,实现封装的时候,里面的值会出现null值
User user = new User();
try {
BeanUtils.populate(user,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}