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

Struts2.1.8和struts2-json-plugin集成时无法返回JSON的原因及解决方案

最近的SSH项目中集成了struts2-json-plugin用以实现JQUERY的AJAX调用,但调用时会出现下列异常信息,现提供异常原因及解决方案。

?? ?异常:

org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with modifiers "public"

?

?? ?出现原因:

?? ?1、在返回JSON字符串的类中,其成员变量如果是由Spring注入的并提供了getter方法,则抛此异常。

?? ?2、懒加载导致。

?? ?

?? ?解决方案:

?? ?1、Spring注入的方法只提供setter方法,不提供getter方法。

?? ?2、排除hibernateLazyInitializer属性。在配置中把hibernateLazyInitializer属性除外:

?? ?<result name="returnValue" type="json">
?? ? ? ?<param name="excludeProperties">.*hibernateLazyInitializer</param>
?? ?</result>