Kri*_*ish 5 spring-mvc hibernate-validator spring-validator spring-boot
我想在 Spring Rest api 的控制器级别验证实体。这是我的代码:
@RestController
@RequestMapping("/orgs")
public class OrganizationController {
@PostMapping("/")
public ResponseEntity<ValidationResponse> addOrganization(@Valid @RequestBody Organization organization){
//code here
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ValidationResponse> invalidInput(MethodArgumentNotValidException ex) {
ValidationResponse response = new ValidationResponse();
response.setSuccess(false);
response.setMessage(ex.getMessage());
return new ResponseEntity<ValidationResponse>(response, HttpStatus.BAD_REQUEST);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在控制器类中包含 ExceptionHandler ,它就可以正常工作。但是,如果我将这个异常处理程序移动到 @ControllerAdvice 中,如下所示,它不起作用。
@ControllerAdvice
public class ExceptionHandlingController {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ValidationResponse> invalidInput(MethodArgumentNotValidException ex) {
ValidationResponse response = new ValidationResponse();
response.setSuccess(false);
response.setMessage(ex.getMessage());
return new ResponseEntity<ValidationResponse>(response, HttpStatus.BAD_REQUEST);
}
}
Run Code Online (Sandbox Code Playgroud)
从控制台日志我发现它被扫描了:
ExceptionHandlerExceptionResolver - Detected @ExceptionHandler methods in defaultExceptionHandler
ExceptionHandlerExceptionResolver - Detected @ExceptionHandler methods in exceptionHandlingController
Run Code Online (Sandbox Code Playgroud)
但 ExceptionHandler 方法没有被调用。
难道我做错了什么吗?
| 归档时间: |
|
| 查看次数: |
2118 次 |
| 最近记录: |