Struts2Action使用插件返回json时报错问题

     @JSON(serialize=false)
     public AuthorityService getAuthorityService() {
         return authorityService;
     }

Struts2Action使用插件返回json时报如下错误:

<span style="font-size:18px;">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"</span>


主要原因:struts会将action中定义的一些变量序列化转换成json格式,需要调用对象的一系列get方法(例子中调用authorityServiceauthorities的get方法),并调用以上两个变量的成员变量的get方法将其内容组成json格式。但是在序列化authorityService时,由于其成员变量中含有含有接口所以会报错。


解决方案:

1)修改配置文件:指定序列化的根节点,这样data就是从authorities的根节点以下的数据,不需要用data.authorities

     <package name="super_admin" extends="json-default" namespace="/superadmin">
         <action name="allAuthorities" class="edu.bjfu.action.AuthoritiesAction">
             <result type="json"><param name="root">authorities</param></result>
         </action>
     </package>

2) 修改java代码:让编译器不对authorityService序列化

     @JSON(serialize=false)
     public AuthorityService getAuthorityService() {
         return authorityService;
    }

3)此外貌似可以通过配置文件的excude和include来指定需要序列化的对象,我没有自己去试!

4)可以去掉不必要的get方法也可以解决

转载自:http://www.cnblogs.com/xiaoyaorensheng/archive/2013/01/02/2842302.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值