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.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)