【发布时间】:2018-03-17 16:47:54
【问题描述】:
我试图获得与在控制器的对象参数中使用 @Valid 时相同的结果。当对象无效时,我的具有@RestControllerAdvice 的 ExceptionHandlerController 会抛出异常 (MethodArgumentNotValidException)。
在我的例子中,我想验证一个对象,但我只能在服务层验证它。该对象有 bean 验证注释,所以我试图以编程方式抛出 MethodArgumentNotValidException 让我的 ExceptionHandlerController 处理它,但我没有成功。
到目前为止,我有这个:
private void verifyCard(CardRequest card) {
BeanPropertyBindingResult result = new BeanPropertyBindingResult(card, "card");
SpringValidatorAdapter adapter = new SpringValidatorAdapter(this.validator);
adapter.validate(card, result);
if (result.hasErrors()) {
try {
throw new MethodArgumentNotValidException(null, result);
} catch (MethodArgumentNotValidException e) {
e.printStackTrace();
}
}
}
第一个参数来自 MethodParameter 类型,我无法创建此对象。这是解决我的问题的最佳方式吗?
编辑 1:
我无法删除 try/catch 块。当我删除它时,我得到编译错误。如何解决?
【问题讨论】:
-
编译错误是什么?
标签: java spring spring-boot bean-validation