У меня две бобы:
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.
Есть ли способ проверить фасоль и бобы, которые он проводит, используя проверяющие группы?
Единственный способ, с помощью которого ваш сценарий мог пропустить внутренние проверки для класса Detail, состоял бы в том, что объект User имеет поле данных, установленное в null. Валидатор все равно будет считать значение null действительным (поскольку вы не указали аннотацию @NotNull специально для этого поля в любой из групп).
Таким образом, аннотации проверки бина внутри класса Detail будут игнорироваться. После правильной инициализации деталей атрибута внутри пользователя он будет проверен в соответствии с указанной группой.