public interface Employee {}
public interface Contractor {}
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
Ограничения могут быть добавлены в одну или несколько групп. Группы ограничений используются для создания подмножеств ограничений, так что для определённого объекта будут проверяться только определённые ограничения. По умолчанию все ограничения включены в группу ограничений Default
.
Группы ограничений представлены интерфейсами.
public interface Employee {}
public interface Contractor {}
Группы ограничений могут наследоваться от других групп.
public interface Manager extends Employee {}
Когда к элементу добавляется ограничение, оно объявляет группы, к которым принадлежит это ограничение, путём указания имени класса для имени интерфейса группы в элементе groups
ограничения.
@NotNull(groups=Employee.class)
Phone workPhone;
Несколько групп можно объявить, заключив их в фигурные скобки ({
и }
) и разделив имена классов групп запятыми.
@NotNull(groups={ Employee.class, Contractor.class })
Phone workPhone;
Если группа наследует от другой группы, проверка этой группы приводит к проверке всех ограничений, объявленных как часть супергруппы. Например, проверка группы Manager
приводит к проверке поля workPhone
, поскольку Employee
является родительским интерфейсом для Manager
.
По умолчанию группы ограничений проверяются в произвольном порядке. Есть случаи, когда некоторые группы должны быть проверены раньше других. Например, в конкретном классе базовые данные должны быть проверены раньше более сложных данных.
Чтобы установить порядок проверки для группы, добавьте аннотацию javax.validation.GroupSequence
в определение интерфейса, перечисляя порядок, в котором должна проводиться проверка.
@GroupSequence({Default.class, ExpensiveValidationGroup.class})
public interface FullValidationGroup {}
При проверке FullValidationGroup
сначала проверяется группа Default
. Если все данные успешно проходят валидацию, проверяется группа ExpensiveValidationGroup
. Если ограничение является частью групп Default
и ExpensiveValidationGroup
, ограничение проверяется как часть группы Default
и не будет проверяться на последующем проходе ExpensiveValidationGroup
.
Назад | Вперёд | Содержание |