Отображение пользовательского сообщения об ошибке для пустого поля в простом приложении JSF

Я испытывал простое приложение 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: Ошибка Проверки: Значение требуется.

Как я отображаю пользовательское сообщение для этого?

5
задан Romain Linsolas 25 March 2010 в 15:58
поделиться

2 ответа

В файле 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 )

20
ответ дан 18 December 2019 в 07:29
поделиться

Путь, предложенный romaintaz , определенно подходит. С другой стороны, если вам нужны дополнительные настройки, вы можете использовать фазовый листен r который срабатывает перед фазой отклика рендеринга, как и некоторые настройки.

Например, сначала определите значение для ключа, как показано ниже:

javax.faces.component.UIInput.REQUIRED=INPUT_REQ_FAIL

затем для входных компонентов, требующих проверки, попросите их передать атрибут с помощью f: attribute. Затем в фазе прослушиватель перебирает сообщения лица и проверяет наличие INPUT_REQ_FAIL и заменяет его. с сообщением cutom вместе со значением атрибута для компонента.

2
ответ дан 18 December 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: