用jsonplugin0.32结合struts2返回的结果类型是json,返回json至页面的过程,报了如下异常:
java.lang.IllegalAccessException: Class com.googlecode.jsonplugin.JSONWriter can not access a member of class org.springframework.aop.interceptor.ExposeInvocationInterceptor$1 with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
at java.lang.reflect.Method.invoke(Method.java:588)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:224)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.array(JSONWriter.java:440)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:149)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.write(JSONWriter.java:95)
at com.googlecode.jsonplugin.JSONUtil.serialize(JSONUtil.java:98)
at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:177)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
。。

解决方案 »

  1.   


    <result name="success" type="json">
    <param name="includeProperties">
    success,
    totalSize,
         projects\[\d+\]\.id,
         projects\[\d+\]\.name
       </param>
    </result>输出你想要的就行了
    要有getset方法哦
      

  2.   


    出现这个问题是某属性通过串行化json数据发生了异常。struts2的action里面的数据转换成json数据时是将提供了getter的属性都统统串行化输出JSON到客户端。但并不是所有的action中的属性都要串行化为json数据类型并返回到前台。比如:使用的在action中配置的由spring注入各种Service属性时,同时提供了getter和setter,但该属性不需返回前台!
     
    解决方法:
    在不需要返回前台的Action中的属性的getter前加上相应的annotation, 
    即添加@JSON(serialize=false) ,以阻止该属性被序列化!