@AssertFalse
boolean isUnsupported;| Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE | 
| Назад | Вперёд | Содержание | 
Модель Bean Validation поддерживается ограничениями в форме аннотаций, размещённых в поле, методе или классе компонента JavaBeans, такого как Managed-бин.
Ограничения бывают стандартными или могут быть заданы пользователем. Ограничения, заданные пользователем, называются пользовательскими ограничениями. Несколько предустановленных ограничений доступны в пакете javax.validation.constraints. Таблица 23-1 перечисляет все предустановленные ограничения. Смотрите Создание пользовательских ограничений для получения информации о создании пользовательских ограничений.
Таблица 23-1. Предустановленные ограничения валидации бинов
| Ограничение | Описание | Пример | 
| 
 | Значение поля или свойства должно быть  |  | 
| 
 | Значение поля или свойства должно быть  |  | 
| 
 | Значение поля или свойства должно быть десятичным числом, меньшим или равным числу в элементе value. |  | 
| 
 | Значением поля или свойства должно быть десятичным числом, большим или равным числу в элементе value. |  | 
| 
 | Значение поля или свойства должно быть числом в указанном диапазоне. Элемент  |  | 
| 
 | Значение поля или свойства должно быть валидным адресом электронной почты. |  | 
| 
 | Значение поля или свойства должно быть датой в будущем. |  | 
| 
 | Значение поля или свойства должно быть датой или временем в настоящем или будущем. |  | 
| 
 | Значение поля или свойства должно быть целым числом, меньшим или равным числу в элементе value. |  | 
| 
 | Значение поля или свойства должно быть целым числом, большим или равным числу в элементе value. |  | 
| 
 | Значение поля или свойства должно быть отрицательным числом. |  | 
| 
 | Значение поля или свойства должно быть отрицательным числом или нулём. |  | 
| 
 | Значение поля или свойства должно содержать как минимум один символ, не являющийся пробелом. |  | 
| 
 | Значение поля или свойства не должно быть пустым. Вычисляется длина символов или массива, а также размер коллекции или отображения (Map). |  | 
| 
 | Значение поля или свойства не должно быть null. |  | 
| 
 | Значение поля или свойства должно быть null. |  | 
| 
 | Значение поля или свойства должно быть датой в прошлом. |  | 
| 
 | Значением поля или свойства должна быть дата или время в прошлом или настоящем. |  | 
| 
 | Значение поля или свойства должно соответствовать регулярному выражению, заданному в элементе  |  | 
| 
 | Значение поля или свойства должно быть положительным числом. |  | 
| 
 | Значение поля или свойства должно быть положительным числом или нулём. . |  | 
| 
 | Размер поля или свойства вычисляется и должен соответствовать указанным границам. Если поле или свойство представляет собой  |  | 
В следующем примере на поле накладывается ограничение с использованием предустановленного ограничения @NotNull:
public class Name {
    @NotNull
    private String firstname;
    @NotNull
    private String lastname;
    ...
}Вы также можете разместить более одного ограничения на один объект компонента JavaBeans. Например, вы можете поместить дополнительное ограничение на размеры полей firstname и lastname:
public class Name {
    @NotNull
    @Size(min=1, max=16)
    private String firstname;
    @NotNull
    @Size(min=1, max=16)
    private String lastname;
    ...
}В следующем примере показан метод с пользовательским ограничением, которое проверяет предварительно заданный шаблон телефонного номера, например номер телефона конкретной страны:
@USPhoneNumber
public String getPhone() {
    return phone;
}Для предустановленного ограничения доступна реализация по умолчанию. Определяемое пользователем ограничение требует реализации. В предыдущем примере пользовательскому ограничению @USPhoneNumber требуется класс реализации.
В Bean Validation 2.0 можно указать одно и то же ограничение несколько раз для цели валидации, используя повторяющуюся аннотацию:
public class Account {
    @Max (value = 2000, groups = Default.class, message = "max.value")
    @Max (value = 5000, groups = GoldCustomer.class, message = "max.value")
    private long withdrawalAmount;
}Все предустановленные ограничения из пакета javax.validation.constraints поддерживают повторяющиеся аннотации. Аналогичным образом, пользовательские ограничения могут использовать аннотацию @Repeatable. В следующем примере, в зависимости от группы PeakHour или NonPeakHour, проверяется, является ли объект автомобиля трёх- или четырёхместным автомобилем и затем указывается подходящая полоса для движения:
/**
 * Validate whether a car is eligible for car pool lane
 */
@Documented
@Constraint(validatedBy = CarPoolValidator.class)
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(List.class)
public @interface CarPool {
    String message() default "{CarPool.message}";
    Class>[] groups() default {};
    int value();
    Class<? extends Payload>[] payload() default {};
    /**
     * Defines several @CarPool annotations on the same element
     * @see (@link CarPool}
     */
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    @Retention(RUNTIME)
    @Documented
    @interface List {
        CarPool[] value();
    }
}
public class Car{
  private String registrationNumber;
  @CarPool(value = 2, group = NonPeakHour.class)
  @CarPool(value = 3, group = {Default.class, PeakHour.class})
  private int totalPassengers;
}Любые ошибки валидации корректно обрабатываются и могут отображаться тегом h:messages.
Любой Managed-бин, содержащий аннотации Bean Validation, автоматически приобретает ограничения, объявленные для полей на веб-страницах JavaServer Faces.
Для получения дополнительной информации об использовании ограничений проверки см. следующее:
| Назад | Вперёд | Содержание | 
 Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
	
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)
 			
		Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
	
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)