我正在尝试获得与从Controller的对象参数中使用@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块。当我删除它时,会出现编译错误。如何解决?
最佳答案
您已经通过catch
块处理了它,应该将try-catch
删除到全局处理程序中以将其捕获。
然后指定如下所示的方法
private void verifyCard(CardRequest card) throws MethodArgumentNotValidException