日期:2014-05-16  浏览次数:20326 次

Struts2 JSON插件序列化hibernate的POJO类出现异常
使用struts2的JSON插件所要做的配置是Struts2的配置文件的package要继承json-default,而不是struts-default。json-default已经继承了struts-default的。
配置action的返回结果是<result type="json" />
<action name="*publish" class="PublishAction" method="{1}" >
   <result type="json" />
</action>


由于hibernate的相关属性,导致hibernate的dao类是不能给序列化的,所以如果使用JSON插件必须使用@JSON(serialize=false)又或者去掉dao类的get方法。

由于hibernate存在延迟加载,所以在序列化hibernate的POJO类的时候要多加小心,由于延迟加载导致POJO类内部的关联类为空,导致JSON插件在序列化的时候出错,抛出异常。处理方法跟上面一样,又可以使用反射把get方法设置为私有。


续:
今天发现又出现了序列化的错误,原先是没有这个问题的。后来发现同事改了我的数据类型,把int型改成了Integer类型。真是无语啊。公司管理太混乱了。又不到我说了算啊。无语啊。所以现在总结,strust2的JSON不能序列化不是基本类型的空对象。