if (testString==null) {
doSomething();
} else {
doAnotherThing();
}
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
Язык программирования Java различает null и пустые строки. Пустая строка — это строковый объект нулевой длины, тогда как строка null вообще не имеет значения.
Пустая строка представляется как ""
. Это последовательность из нулевых символов. Строка null представлена как null
. Это можно описать как отсутствие объекта строки.
Элементы Managed-бина, представленные в виде текстового компонента JavaServer Faces, такого как inputText
, инициализируются JavaServer Faces значением пустой строки. Проверка этих строк может быть проблемой, когда пользовательский ввод для таких полей не требуется. Рассмотрим следующий пример, где строка testString
является переменной компонента, которая будет установлена с использованием пользовательского ввода. В этом случае пользовательский ввод для поля не требуется.
if (testString==null) {
doSomething();
} else {
doAnotherThing();
}
По умолчанию метод doAnotherThing
вызывается даже тогда, когда пользователь не вводит данные, поскольку элемент testString
был инициализирован со значением пустой строки.
Чтобы модель проверки компонентов работала должным образом, необходимо установить для контекстного параметра javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
значение true
в файле дескриптора развёртывания web.xml
:
<context-param>
<param-name>
javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
</param-name>
<param-value>true</param-value>
</context-param>
Этот параметр указывает JavaServer Faces обрабатывать пустые строки как null.
Предположим, с другой стороны, что у вас есть ограничение @NotNull
для элемента, что означает, что требуется ввод. В этом случае пустая строка пройдет это ограничение проверки. Однако если вы установите для контекстного параметра javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
значение true
, значение атрибута Managed-бина передаётся среде выполнения Bean Validation в качестве нулевого значения, что приводит к появлению значения null. Ограничение @NotNull
не выполнено.
Назад | Вперёд | Содержание |