首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@ExceptionHandler处理HttpMessageNotWritableException

@ExceptionHandler处理HttpMessageNotWritableException
EN

Stack Overflow用户
提问于 2021-05-25 20:04:16
回答 1查看 43关注 0票数 0

我正在通过RestControllerAdvice处理我的响应模型。我正在尝试使用@ExceptionHandler来处理错误。

代码语言:javascript
复制
@RestControllerAdvice("cn.songxh.demo.web")
public class MyResponseBodyAdvice implements ResponseBodyAdvice {

    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
        MyResponse resp = new MyResponse();
        resp.setData(body);
        return resp;
    }

    @ExceptionHandler(Exception.class)
    public MyResponse exceptionHandler(Exception e) {
        e.printStackTrace();
        MyResponse resp = new MyResponse();
        resp.setSuccess(false);
        return resp;
    }
}

我希望它将{"success":false}返回给客户端。

不幸的是,当HttpMessageNotWritableException发生时,我得到了{"success":true}{"success":false}。它甚至不是有效的json字符串。

我在https://github.com/tsingheng/exception-handler-demo中创建了一个演示项目。

EN

回答 1

Stack Overflow用户

发布于 2021-05-25 21:47:44

这可能会导致结果{"success":true}{"success":false}

代码语言:javascript
复制
 @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
       //this place add MyResponse -> {"success":true}
        MyResponse resp = new MyResponse();
        resp.setData(body);
        return resp;
    }

如果你不想beforeBofyWrite做某事

您不需要实现ResponseBodyAdvice

链接https://blog.csdn.net/u013887008/article/details/100183087

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67687550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档