在struts2 pojo action中有对象属性的,并被hibernate管理的,都会出现这种问题。因为hibernate会给每个被管理的对象加上hibernateLazyInitializer属性,同时struts-jsonplugin或者其他的jsonplugin都是通过java的反射机制将pojo转换成json的,但是hibernateLazyInitializer无法由反射得到,所以就抛异常了。
这种问题同样发生在spring mvc的通过ajax访问SSH2中。
解决方法:
第一种方法:将POJO Action中hibernate管理对象的get方法去掉,同时在struts2的struts.xml文件中的<result type="json"></result>加入<param name="excludeProperties">.*hibernateLazyInitializer</param>:
<result type="json">
<param name="excludeProperties">.*hibernateLazyInitializer</param>
</result>
用于使用struts-jsonplugin的情况。
第二种方法:在pojo的类上加入annotation来排除hibernateLazyInitializer 这个属性:
annotation:
@JsonIgnoreProperties(value={"hibernateLazyInitializer"})
用于使用jackson来转移json对象的情况。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chen_shuqing/archive/2010/06/18/5677430.aspx
分享到:
相关推荐
我自己有点用,网上也有 ssh2 ajax jquery 知识 ssh2 ajax jquery 知识 ssh2 ajax jquery 知识 ssh2 ajax jquery 知识
Ajax里jQuery的ajax与ssh三框架的集成与总和
最新Ajax+SSH例子!里面应用了Struts+hibernate+Spring!
基于SSH2 架构的登录源代码。。。 采用ajax
利Android AQuery中ajax访问SSH搭建的后台Java Web服务器
ajax里response返回的数据是一个二维数组,比如这样的[{key,val},{key,val},{key,val}],这个就是传说中的json数据了,以这样的形式数据传到前台,实现菜单联动下拉框;具体怎么样,详情请仔细查看以下内容
jquery,ajax,ssh实现登陆注册以及动态验证
基于AJAX和SSH集成框架的国有资产管理系统基于AJAX和SSH集成框架的国有资产管理系统基于AJAX和SSH集成框架的国有资产管理系统
使用三大框架写ajax系统,充分利用AJAX技术实现所需要的效果
基于SSH的AJAX简单实例
整合ajax+ssh,放上来供需要的朋友参考。
ssh2+ajax+jquery+json验证用户名是否存在
SSH ajax 例子
ajax异常,页面跳转异常处理
ajax+ssh 实现省份城市级联查询 应用实例
ssh2(struts2+spring2.5+hibernate3.3+ajax)带进度条文件上传(封装成标签)
后台的全局异常处理,返回结果的封装,前台对于后台封装结果的解析,让你只需要关注业务逻辑而不需要关注返回异常信息
json2 ajax返回list处理 在jsp页面 遍历
spring,hibernate,struts1,ajax 实例
ajax里response返回的数据是一个二维数组,比如这样的[{key,val},{key,val},{key,val}],以这样的形式数据传到前台,实现菜单联动下拉框,具体详解,请看文档