исключение, брошенное в isValid - спящий валидатор - PullRequest
0 голосов
/ 20 июня 2019

При проверке какой-либо конфигурации я загружаю из application.yml используя пользовательский валидатор, как показано ниже:

public class MyValidator implements ConstraintValidator<MyAnnotation, List<MyClass>> {

        @Override
        public void initialize(MyAnnotation myAnnotation) {
            //nothing to do
        }

        @Override
        public boolean isValid(List<MyClass> myList, ConstraintValidatorContext context) {
           // validation logic
        }
    }

если ваша логика проверки запускает исключение, например, в случае нулевого наведения, я заметил, что другие возможные средства проверки не включаются, и отображается сообщение об ошибке, которое читает что-то вроде ошибка привязки .

как лучше избегать этой ситуации?

1 Ответ

0 голосов
/ 20 июня 2019

Таким образом, общая лучшая практика с валидаторами Hibernate Validator заключается в том, что они должны рассматривать пустую запись как действительную.

Если вы отметите те из них, которые мы предоставляем в Hibernate Validator, они все вернут true для нулевой записи. Идея состоит в том, чтобы явно использовать @NotNull, когда вы хотите проверить на нулевое значение.

Есть несколько исключений, таких как @NotBlank, но это лучшая общая практика.

Очевидно, как сказано выше, ваш код должен быть правильным и избегать NPE или других исключений. Но это само собой разумеется.

...