我正在尝试覆盖一个方法:
@RestControllerAdvice
public class ControllersExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleBindException(BindException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
return handleExceptionInternal(ex, new ErrorDto(HttpStatus.BAD_REQUEST.value(),
"Invalid credentials! Password should has min 8 symbols and all fields are required"),
headers, status, request);
}
}
==============================
@Data
@AllArgsConstructor
public class ErrorDto {
private int status;
private String message;
}
我试图覆盖它,以便它向客户端返回一个清晰的响应,但结果是这样的:
而且,好像没有试图用 ResponseEntity 变态,它总是返回空 json。如何纠正?

很可能您正在抛出其他异常,而不是
BindException该类还包含一大堆
ResponseEntityExceptionHandler其他. 其中一些默认返回 400 代码和一个空正文。handleBindExceptionhandle***使用调试器检查哪个异常正在进入
ResponseEntityExceptionHandler.handleException以及哪个handle***异常被抛出upd:使用时
@Valid会@Size(min=10)抛出异常MethodArgumentNotValidException,可以通过覆盖方法来处理handleMethodArgumentNotValid