用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)
。。
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)
。。
<result name="success" type="json">
<param name="includeProperties">
success,
totalSize,
projects\[\d+\]\.id,
projects\[\d+\]\.name
</param>
</result>输出你想要的就行了
要有getset方法哦
出现这个问题是某属性通过串行化json数据发生了异常。struts2的action里面的数据转换成json数据时是将提供了getter的属性都统统串行化输出JSON到客户端。但并不是所有的action中的属性都要串行化为json数据类型并返回到前台。比如:使用的在action中配置的由spring注入各种Service属性时,同时提供了getter和setter,但该属性不需返回前台!
解决方法:
在不需要返回前台的Action中的属性的getter前加上相应的annotation,
即添加@JSON(serialize=false) ,以阻止该属性被序列化!