使用BeanUtils版本1.9.4(最新版)。在开发过程中遇到了问题。使用BeanUtils的populate后出现exception。经过debug后发现是因为我传入的map中有一个值我的bean对象并没有对应的Set方法导致(本来这个key对应的值就不该被传入bean对象中)
在Bean对象中加入了相应的set方法,问题解决了。但这治标不治本显然是不可行的。于是我尝试网上寻找答案,但更多人的问题是出现空串(这个问题往往也是因为没有对应set方法导致的)。于是我开始搜寻原因。
最后我尝试更换了版本,将BeanUtils1.9.4更换成了BeanUtils1.8.0.问题得到解决。看样子大概是最新版BeanUtils有点bug。
顺便简单说一说BeanUtils.populate这个方法的原理:加map和bean对象传入后,会在bean对象中自动查询与每一个key值对应的set方法,也就是说,如果一个map中的值,key="UserName",value="123456",就会去bean对象里找有没有名字是setUserName的方法,如果没有,就跳过。如果有,那就通过set方法传进去。很多人都是忽略了这一点导致populate出来的一直是空值。
希望能帮到后来人,也给我自己留一个教训,还是尽可能运用成熟的版本。