BeanUtils大小写问题

在使用BeanUtils为对象的属性赋值时发现像aInteger这种命名的属性有问题,看了一下代码发现BeanUtils是基于get、set函数来进行取值、赋值的,对象的属性名称是通过截取get、set函数名得到的,具体如下:

if (returnType.equals(boolean.class) && isPrefix(name, "is")) {

PropertyInfo info = getInfo(map, name.substring(2), false);

info.read = new MethodInfo(method, boolean.class);

} else if (!returnType.equals(void.class) && isPrefix(name, "get")) {

PropertyInfo info = getInfo(map, name.substring(3), false);

info.readList = add(info.readList, method, method.getGenericReturnType());

}

当使用aInteger这种命名时对应的get、set函数名为:

public Integer getAInteger(){return aInteger;}

public void setAInteger(Integer value){aInteger = value;}

那么BeanUtils记录的属性名就是AInteger,所以使用aInteger进行赋值当然就不生效了,需要用AInteger进行赋值才能正常工作,如:

BeanUtils.setProperty(bean, "AInteger", 123); // 可以正常赋值



分享到:


相關文章: