【JavaEE】关于Controller层注入HttpServletResponse,自身的返回结果失效了

7 篇文章 0 订阅

由于后端的返回数据采用统一的数据结构,所以不管是SpringBoot还是SpringMVC,都运用了ResponseBodyAdvice类以及@ControllerAdvice注解来辅助。

项目中有一个接口是来接收公众号推事件的。最近不知道怎么的,一直出现报警,提示我没有响应内容给微信。

@POSTMapping("xxx")
public void xxx(HttpServletResponse response){
    
}

虽然我返回的是void ,但是我底层有做返回统一数据的封装,平时项目也在使用,肯定都会返回一个基本数据的骨架。究竟是因为什么导致代码没有经过 ResponseBodyAdvice类,从而以统一格式输出到前端?思前想后,猜测有没有可能是因为方法注入了HttpServletResponse,然后MVC觉得你可能要自己要做一些特殊的处理,所以他就

没有在执行标准的RequestHandler。

测试了三种结果:

  • 没有注入HttpServletResponse

    返回自定义的统一数据结构。

  • 注入HttpServletResponse,没有返回值

    没有返回任何响应数据。

  • 注入HttpServletResponse,有返回值

    返回自定义的统一数据结构。

这也验证了刚才我的猜想是对的。所以如果当你注入了HttpServletResponse,前端又发现接口请求成功,但是没有数据响应的时候,请注意是否是第二种情况。第二种情况比较适合于那种支付回调的一些业务,对页面输出一些对方要求的格式内容,如XML等等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰肥啊

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值