我正在通过RestControllerAdvice处理我的响应模型。我正在尝试使用@ExceptionHandler来处理错误。
@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中创建了一个演示项目。
发布于 2021-05-25 21:47:44
这可能会导致结果{"success":true}{"success":false}
@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
https://stackoverflow.com/questions/67687550
复制相似问题