Я испытывал простое приложение JSF, в которое я должен проверить, является ли поле "имени" пробелом, то отобразите сообщение об ошибке.
Код, который принимает значение поля:
<h:outputLabel value="Name"/>
<h:inputText value="#{greeting.name}" required="true">
<f:validator validatorId="NumValidator"/>
</h:inputText>
Управление программы не входит в класс блока проверки допустимости, если поле отправлено, ничего не вводя, и это отображает сообщение об ошибке по умолчанию:
j_id_jsp_869892673_1:j_id_jsp_869892673_4: Ошибка Проверки: Значение требуется.
Как я отображаю пользовательское сообщение для этого?
В файле Message.properties
хранятся сообщения проверки по умолчанию. Этот файл содержится в JAR библиотеки реализации JSF.
Если вы посмотрите содержимое этого файла относительно требуемой проверки, вы увидите, что:
javax.faces.component.UIInput.REQUIRED={0}: Validation Error: Value is required.
Чтобы определить свои собственные сообщения об ошибках, создайте новый файл свойств, добавьте соответствующее сообщение об ошибке , например:
javax.faces.component.UIInput.REQUIRED=Hey, you forgot to fill the input {0}!
(обратите внимание, что {0}
будет заменен идентификатором поля)
затем в вашем faces-config.xml
определите new message-bundle
:
<message-bundle>package.that.contains.the.properties.file</message-bundle>
Так, например, если ваш my-messages.properties
хранится в пакете foo / bar, вам нужно будет написать:
<application>
...
<message-bundle>foo.bar.my-messages</message-bundle>
</application>
( обратите внимание, что вам не нужно указывать расширение .properties
)
Путь, предложенный romaintaz , определенно подходит. С другой стороны, если вам нужны дополнительные настройки, вы можете использовать фазовый листен r который срабатывает перед фазой отклика рендеринга, как и некоторые настройки.
Например, сначала определите значение для ключа, как показано ниже:
javax.faces.component.UIInput.REQUIRED=INPUT_REQ_FAIL
затем для входных компонентов, требующих проверки, попросите их передать атрибут с помощью f: attribute. Затем в фазе прослушиватель перебирает сообщения лица и проверяет наличие INPUT_REQ_FAIL и заменяет его. с сообщением cutom вместе со значением атрибута для компонента.