Аннотация @Valid игнорируется группами проверки

1

У меня две бобы:

public class User {
    @NotNull
    public String name;

    @NotNull(groups = {Default.class, ChangeCheckGroup.class})
    public String password;

    @Valid
    public Details details;
}

а также

public class Details {
    @NotNull(groups = {Default.class, ChangeCheckGroup.class})
    public String email;
}

Я использую Hibernate Bean Validator для ручной проверки пользовательского компонента.

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

Set<ConstraintViolation> cv = validator.validate( entitie );

Он будет проверять user.name, user.password, user.details.email.

Но когда я пытаюсь использовать валидатор с настраиваемой группой проверки ChangeCheckGroup, он игнорирует аннотацию @Valid.

Set<ConstraintViolation> cv = validator.validate( entitie, groups );

Будет проверять только user.password, и не будет проверки user.details.email.

Есть ли способ проверить фасоль и бобы, которые он проводит, используя проверяющие группы?

  • 0
    Ваш пример работает для меня (электронная почта проверена с пользовательской группой). Какую версию hibernate-validator вы используете?
  • 0
    Вы проверили, что детали не равны нулю в обоих сценариях?
Теги:
hibernate-validator

1 ответ

1
Лучший ответ

Единственный способ, с помощью которого ваш сценарий мог пропустить внутренние проверки для класса Detail, состоял бы в том, что объект User имеет поле данных, установленное в null. Валидатор все равно будет считать значение null действительным (поскольку вы не указали аннотацию @NotNull специально для этого поля в любой из групп).

Таким образом, аннотации проверки бина внутри класса Detail будут игнорироваться. После правильной инициализации деталей атрибута внутри пользователя он будет проверен в соответствии с указанной группой.

  • 1
    Да, я должен согласиться. Это была моя ошибка, я не установил @NotNull для полей, для которых я хочу проверки. Благодарю вас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню