{1}: Ошибка проверки: значение больше допустимого максимума "{0}"
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
JavaServer Faces предоставляет набор стандартных классов и связанных с ними тегов, которые авторы страниц и разработчики приложений могут использовать для валидации данных компонента. Таблица 11-6 перечисляет все стандартные классы валидаторов и теги, которые позволяют вам использовать валидаторы со страницы.
Таблица 11-6. Классы валидаторов
Класс валидатора |
Тег |
Функция |
|
|
Регистрирует валидатор бина в компоненте. |
|
|
Позволяет валидацию нескольких полей путём включения валидацию бина на уровне класса вспомогательного бина CDI. |
|
|
Проверяет, находится ли локальное значение компонента в определённом диапазоне. Значение должно быть числом с плавающей точкой или конвертируемым в число с плавающей точкой. |
|
|
Проверяет, находится ли длина локального значения компонента в определённом диапазоне. Значение должно быть |
|
|
Проверяет, находится ли локальное значение компонента в определённом диапазоне. Значение должно быть любого числового типа или объектом типа |
|
|
Проверяет, соответствует ли локальное значение компонента регулярному выражению из пакета |
|
|
Гарантирует, что локальное значение не является пустым в компоненте |
Все эти классы валидатора реализуют интерфейс Validator
. Авторы компонентов и разработчики приложений также могут реализовать этот интерфейс, чтобы задать собственный набор ограничений для значения компонента.
Подобно стандартным конвертерам, каждый из этих валидаторов имеет одно или несколько стандартных сообщений об ошибках, связанных с ним. Если вы зарегистрировали один из этих валидаторов в компоненте на своей странице, и валидатор не может проверить значение компонента, на странице появится сообщение об ошибке валидатора. Например, сообщение об ошибке, которое отображается, когда значение компонента превышает максимально допустимое значение LongRangeValidator
, выглядит следующим образом:
{1}: Ошибка проверки: значение больше допустимого максимума "{0}"
В этом случае параметр замещения {1}
заменяется меткой компонента или id
, а параметр замещения {0}
заменяется на максимальное значение, разрешённое валидатором.
См. Отображение сообщений об ошибках тегами h:message и h:messages для получения информации о том, как отображать сообщения об ошибках на странице при сбоях валидации.
Вместо использования стандартных валидаторов вы можете использовать Bean Validation для проверки данных. Если вы указываете ограничения Bean Validation на свойствах вашего Managed-бина, эти ограничения автоматически помещаются в соответствующие поля на веб-страницах ваших приложений. См. главу 23 «Введение в валидацию бинов» для получения дополнительной информации. Не обязательно указывать тег validateBean
для использования Bean Validation, но этот тег позволяет использовать более сложные функции Bean Validation. Например, вы можете использовать атрибут validationGroups
тега, чтобы указать группы ограничений.
Вы также можете создавать и регистрировать кастомные валидаторы, хотя Bean Validation делает эту функцию менее полезной. Для получения дополнительной информации см. Создание и использование кастомного валидатора.
Чтобы проверить значение компонента с помощью определённого валидатора, необходимо зарегистрировать этот валидатор в компоненте. Вы можете сделать это одним из следующих способов.
Вложите соответствующий тег валидатора (показан в таблице 11-6) внутрь тега компонента. Использование тегов валидатора объясняет, как использовать тег validateLongRange
. Вы можете использовать другие стандартные теги таким же образом.
Обратитесь к методу, который выполняет проверку из атрибута validator
тега компонента.
Вложите тег валидатора в тег компонента и используйте для ссылки на валидатор либо атрибут validatorId
тега валидатора, либо атрибут binding
компонента.
Смотрите Ссылка на метод, который выполняет валидацию для получения дополнительной информации об использовании атрибута validator
.
Атрибут validatorId
работает аналогично атрибуту converterId
тега converter
, как описано в Конвертация значения компонента.
Помните, что проверка может быть выполнена только для компонентов, которые реализуют EditableValueHolder
, потому что только эти компоненты принимают валидируемые значения.
В следующем примере показано, как использовать тег валидатора f:validateLongRange
для компонента ввода с именем quantity
:
<h:inputText id="quantity" size="4" value="#{item.quantity}">
<f:validateLongRange minimum="1"/>
</h:inputText>
<h:message for="quantity"/>
Этот тег требует, чтобы пользователь ввёл число не меньше 1 (единицы). Тег validateLongRange
также имеет атрибут maximum
, который устанавливает максимальное значение для ввода.
Атрибуты всех стандартных тегов валидатора принимают выражения значений EL. Это означает, что атрибуты могут ссылаться на свойства Managed-бина, а не указывать литеральные значения. Например, тег f:validateLongRange
в предыдущем примере может ссылаться на свойства minimum
и maximum
Managed-бина, чтобы получить минимальное и максимальное допустимые значения валидатора, как показано в этом фрагменте из примера guessnumber-jsf
:
<h:inputText id="userNo"
title="Type a number from 0 to 10:"
value="#{userNumberBean.userNumber}">
<f:validateLongRange minimum="#{userNumberBean.minimum}"
maximum="#{userNumberBean.maximum}"/>
</h:inputText>
Следующий тег f:validateRegex
показывает, как можно убедиться, что пароль имеет длину от 4 до 10 символов и содержит как минимум одну цифру, как минимум одну строчную букву и как минимум одну заглавную букву:
<f:validateRegex pattern="((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,10})"
for="passwordVal"/>
Назад | Вперёд | Содержание |