JSF 2.0 validateRegex с собственным сообщением валидатора - PullRequest
5 голосов
/ 14 сентября 2011

У меня есть код, подобный этому:

<h:inputText id="email" value="#{managePasswordBean.forgotPasswordEmail}"
        validatorMessage="#{validate['constraints.email.notValidMessage']}"
        requiredMessage="#{validate['constraints.email.emptyMessage']}"
        validator="#{managePasswordBean.validateForgotPasswordEmail}"
        required="true">
    <f:validateRegex pattern="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$" />
</h:inputText>

Валидатор в компоненте поддержки генерирует собственное сообщение проверки. но он перезаписывается сообщением validatorMessage тега inputText.

Мой вопрос: как я могу определить пользовательское сообщение валидатора для тега validateRegex? Я не хочу удалять причину validatorMessage, тогда JSF отображает собственное сообщение об ошибке, содержащее шаблон регулярных выражений и так далее -> которое я не нахожу очень симпатичным.

Спасибо за помощь:)

1 Ответ

13 голосов
/ 14 сентября 2011

Вы не можете определить отдельный validatorMessage для каждого отдельного валидатора.Лучшее, что вы можете сделать, - это также выполнить проверку регулярного выражения в своем пользовательском валидаторе, чтобы вы могли удалить validatorMessage.


Обновление : начиная с версии 1.3,<o:validator> компонент библиотеки утилит JSF OmniFaces позволяет вам устанавливать сообщение валидатора для каждого валидатора.Ваш конкретный случай может быть решен следующим образом:

<h:inputText id="email" value="#{managePasswordBean.forgotPasswordEmail}"
        required="true" requiredMessage="#{validate['constraints.email.emptyMessage']}">
    <o:validator binding="#{managePasswordBean.validateForgotPasswordEmail}" message="#{validate['constraints.email.notValidMessage']}" />
    <o:validator validatorId="javax.faces.RegularExpression" pattern="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$" message="Your new custom message here" />
</h:inputText>

Не связан с конкретной проблемой: в эти дни вы были бы не готовы к мировому господствудо тех пор, пока вы проверяете адреса электронной почты на основе латинских символов.См. Также Проверка электронной почты с использованием регулярного выражения в JSF 2 / PrimeFaces .

...