MethodArgumentNotValidException

MethodArgumentNotValidException

我正在尝试获得与从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

10-04 18:06