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

2024-04-01

我有一个与此类似的代码:

<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>

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

我的问题是:如何为 validateRegex 标记定义自定义验证器消息?我不想删除 validatorMessage 因为 JSF 显示了一条自己的错误消息,其中包含正则表达式模式等 -> 我觉得这不太漂亮。

谢谢您的帮助 :)


你不能定义一个单独的validatorMessage对于每个单独的验证者。您能做的最好的事情就是在自定义验证器中进行正则表达式验证,以便您可以删除validatorMessage.


Update:从 1.3 版本开始,<o:validator> http://showcase.omnifaces.org/taghandlers/validatorJSF 实用程序库的组件OmniFaces http://omnifaces.org允许您为每个验证器设置验证器消息。您的具体情况可以按如下方式解决:

<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>

无关针对具体问题:这些天你会not只要您仍然根据拉丁字符验证电子邮件地址,就可以为统治世界做好准备。也可以看看在 JSF 2 / PrimeFaces 中使用正则表达式进行电子邮件验证 https://stackoverflow.com/questions/7875108/email-validation-using-regular-expression-in-jsf-2-primefaces/12824163#12824163.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF 2.0 validateRegex 带有自己的验证器消息 的相关文章

随机推荐