关闭

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

2124人阅读 评论(0) 收藏 举报

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

<logic:iterate name="buyregisters" id="buyregister">
  <pg:item>
    
         <tr onmouseover="mOvr(this);" onmouseout="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
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2535次
    • 积分:45
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档