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.
| Назад | Вперёд | Содержание |
Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)