Spring ControllerAdvice不返回响应体?



我有以下ControllerAdvice,处理JsonParseException(我使用Spring和Jackson)

@ControllerAdvice
public class ControllerExceptionHandler  extends ResponseEntityExceptionHandler {
@ExceptionHandler(JsonParseException.class)
public ResponseEntity<Object> handleInvalidJson(JsonParseException ex, WebRequest request){
Map<String,Object> body = new LinkedHashMap<>();
body.put("timestamp", LocalDateTime.now());
body.put("message","Invalid Json");
return new ResponseEntity(body, HttpStatus.BAD_REQUEST);
}
}

由于某些原因,当我发送一个糟糕的json请求到服务器时,它不工作,只返回400。当我改变HttpStatus时,它仍然返回400,所以看起来建议并没有真正运行。

ResponseEntityExceptionHandler已经实现了很多不同的ExceptionHandlers。HttpMessageNotReadableException是其中之一:

else if (ex instanceof HttpMessageNotReadableException) {
HttpStatus status = HttpStatus.BAD_REQUEST;
return handleHttpMessageNotReadable((HttpMessageNotReadableException) ex, headers, status, request);
}

直接删除继承:

@ControllerAdvice
public class TestExceptionHandler {
@ExceptionHandler(JsonParseException.class)
public ResponseEntity<Map<String,Object>> handleInvalidJson(JsonParseException ex, WebRequest request){
Map<String,Object> body = new LinkedHashMap<>();
body.put("timestamp", LocalDateTime.now());
body.put("message","Invalid Json");
return new ResponseEntity<>(body, HttpStatus.I_AM_A_TEAPOT);
}
}

最新更新