我正在验证休息端点的请求参数:
@Valid BoundingBox boundingBox
请求参数列表映射到BoundingBox
. 在课堂BoundingBox
上,我使用注解进行字段验证,例如@Max、@Min 等。
为了处理任何无效的请求参数,我将
ResponseEntityExceptionHandler.handleMethodArgumentNotValid
方法重写为:
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
HttpHeaders headers, HttpStatus status,
WebRequest request) {
List<String> details = new ArrayList<>();
for(ObjectError error : ex.getBindingResult().getAllErrors()) {
details.add(error.getDefaultMessage());
}
ExceptionDetails error = new ExceptionDetails("Validation Failed", details);
return new ResponseEntity(error, HttpStatus.BAD_REQUEST);
}
注释ControllerAdvice
放置在处理程序类的顶部。@Valid 似乎可以工作,因为 request 没有通过并返回BAD_REQUEST
,但handleMethodArgumentNotValid
没有调用方法。