文档章节

使用Spring的AOP拦截Struts2的Action时输出Json出错

许乌龙
 许乌龙
发布于 2016/03/20 00:39
字数 440
阅读 39
收藏 0

  使用Spring的AOP拦截Struts2的Action时输出Json出错,一直报org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException。

  百度Google了一晚上无果,基本都是在说,因为Spring注入service类时生成了get方法,然而这些类无法被序列化因而报错。在get方法上面增加以下注解即可解决。

@JSON(serialize = false)

  最终在官方文档上找到了原因。

  https://struts.apache.org/docs/json-plugin.html#JSONPlugin-Proxiedobjects

  百度+人工翻译:因为注解无法被继承,所以json无法检测到Action类方法的注解。为了解决这个问题,将ignoreSMDMethodInterfaces属性设置为false(默认为true),让插件去检查Action类的所有父类和接口的方法上的注解。注意:可能会出现性能问题。

<param name="ignoreSMDMethodInterfaces">false</param>

  完整示范为:

<action name="contact" class="package.ContactAction" method="smd">
   <interceptor-ref name="json">
      <param name="enableSMD">true</param>
      <param name="ignoreSMDMethodInterfaces">false</param>
   </interceptor-ref>
   <result type="json">
      <param name="enableSMD">true</param>
      <param name="ignoreInterfaces">false</param>
   </result>
   <interceptor-ref name="default"/>
</action>

  然而并没有用。确实输出Json了,但并不是我那个Action类内的属性。哪位同行要是知道原因劳烦告知。

  但既然知道了是注解上出的问题,那我就用配置来解决:

<result type="json">
  <param name="includeProperties">telNo,result,msg</param>
  <param name="noCache">true</param>
  <param name="excludeNullProperties">true</param>
  <param name="statusCode">200</param>
  <param name="encoding">UTF-8</param>
</result>

  直接把需要输出的属性填入includeProperties属性,收工。


  2016-03-20补充,输出list需指定具体输出list的哪些属性,或者直接这样

<param name="includeProperties">areaList.*,userList.*</param>


© 著作权归作者所有

许乌龙
粉丝 86
博文 18
码字总数 31823
作品 0
广州
个人站长
私信 提问
Spring、Spring MVC、Struts2、、优缺点整理

Spring 及其优点 大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架。 说它轻量级有一大部分...

架构师springboot
03/21
25
0
Java常见面试题汇总-----------Java框架

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/zengxiantao1994/article/details/89475719 47、struts2的执行流程?...

知行流浪
04/23
0
0
Spring MVC与Struts比较

Struts2与SpringMVC都是比较优秀,也是被广泛使用的Web开发框架,那么他们之间有什么区别呢?今天小博老师就跟大家来讨论下这个问题。 Struts工作流程图 Struts与Spring之间主要有以下几点区...

博为峰教研组
2016/11/24
27
0
同为框架,Struts2和SpringMVC比较的区别!

Struts2和SpringMVC是比较流行的MVC框架,二者的工作流程大体相似,从下面两张图就可以看出。, SpringMVC工作流程图 图二 SpringMVC的工作流程描述 1. 用户向服务器发送请求,请求被Spring前...

欧阳海阳
2018/06/29
0
0
SpringMVC与Struts2区别与比较总结

1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现...

LYQ1990
2016/05/24
59
0

没有更多内容

加载失败,请刷新页面

加载更多

VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
40分钟前
4
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
49分钟前
5
0
《DNS攻击防范科普系列3》 -如何保障 DNS 操作安全

引言 前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操...

Mr_zebra
50分钟前
4
0
zk中ServerCnxn

实现接口Stats, Watcher 内部类 DisconnectReason CloseRequestException EndOfStreamException(流关闭) 属性 方法 getSessionTimeout 获取session失效时间 sendResponse 发送回复数据 se......

writeademo
54分钟前
4
0
如何将 Redis 用于微服务通信的事件存储

来源:Redislabs 作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的、松耦合的、可协同工作的独立逻辑业务服务会更易于构建和维护。这些服务(也...

中间件小哥
58分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部