一个错误的解决:Exception thrown by getter for property author of bean buyregister

星期一打开正在开发的系统,发现有个页面出错,后台提示是:Exception thrown by getter for property author of bean buyregister,出错处的jsp代码为:

<logic:iterate name="buyregisters" id="buyregister">
  <pg:item>
    
         <tr οnmοuseοver="mOvr(this);" οnmοuseοut="mOut(this);" onDblClick="dbclickItem('<bean:write name="buyregister" property="id" />')">
           <td  class = "table_td2">
               <input type="radio" name="chk" value="<bean:write name="buyregister" property="id" />" class="radio"></td>
           <td nowrap  class = "table_td2" ><bean:write  name="buyregister" property="author"/></td>
           <td nowrap  class = "table_td2" ><bean:write  name="buyregister" property="fillDateString" /></td>         
           <td nowrap  class = "table_td2" ><bean:write  name="buyregister" property="articletype" /></td>
           <td nowrap  class = "table_td2" ><bean:write  name="buyregister" property="articlename" /></td>
           <td nowrap  class = "table_td2" ><bean:write  name="buyregister" property="articlenumber"/></td>
         </tr>
       
        </pg:item>
  </logic:iterate>

仔细检查了一下代码,bo中author字段没有错、hbm.xml配置文件也没有错,在sturts配置文件中也一切正常,都匹配,这时开始怀疑是在action中没有取出buyregisters,用System.out.println()()打印了一下,发现buyregisters不为null,正百思不得其解,于是随便乱试,先把buyregisters数组中的第一个buyregister的author打印出来看看,结果页面报错:

org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.teligen.officearticle.bo.BuyRegister.setIsdraft

google了一下,有人提示说是有为null的字段,这时突然想起来上周在这个bo中增加了isdraft字段,那些旧记录的该字段的值肯定是null了,给它们赋值,再试,一切ok!从这个错误可以看出,再用buyregisters[0].getAuthor()取author值之前,hibernate会先把所有字段的值赋给buyregisters[0],然后才能取出来,有null值就会出错。

   还有,上面错误提示中有(set hibernate.cglib.use_reflection_optimizer=false for more info) ,在applicationContext.xml中设了一下:

 <prop key="hibernate.cglib.use_reflection_optimizer">false</prop>

然后把log4j.properties的提示级别改为info,重新让错误出现,这时发现后台多报了几行错误:

Caused by: net.sf.cglib.beans.BulkBeanException
        at com.teligen.officearticle.bo.BuyRegister$$BulkBeanByCGLIB$$ef4270da.setPropertyValues(<generated>)
        at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:200)
        ... 66 more
Caused by: java.lang.NullPointerException
        ... 68 more

再和org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.teligen.officearticle.bo.BuyRegister.setIsdraft相结合考虑就能得出可能是isdraft的值为null

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值