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中的正则表达式进行的电子邮件验证.