JSF 2.0 validateRegex具有自己的验证器消息

Ihl*_*ily 5 regex validation message textinput jsf-2

我有一个类似于这样的代码:

<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>
Run Code Online (Sandbox Code Playgroud)

支持bean中的验证器生成了自己的验证消息.但它被inputText标记的validatorMessage覆盖.

我的问题是:我如何为validateRegex标签定义自定义验证器消息?我不想删除validatorMessage原因然后JSF显示一个包含正则表达式模式的自己的错误消息等等 - >我不觉得非常漂亮.

谢谢您的帮助 :)

Bal*_*usC 13

您无法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>
Run Code Online (Sandbox Code Playgroud)

具体问题无关:只要您仍然根据拉丁字符验证电子邮件地址,这些天您就不会为世界统治做好准备.另请参阅使用JSF 2/PrimeFaces中的正则表达式进行的电子邮件验证.