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

时间:2011-09-14 10:53:46

标签: regex jsf-2 message validation textinput

我的代码与此类似:

<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正在显示包含正则表达式模式的自己的错误消息,依此类推 - &gt;我觉得它不太漂亮。

感谢您的帮助:)

2 个答案:

答案 0 :(得分:12)

您无法为每个验证者定义单独的validatorMessage。最好的办法是在自定义验证器中进行正则表达式验证,以便删除validatorMessage


更新:自版本1.3起,JSF实用程序库<o:validator>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>

对具体问题

无关:如果您仍然根据拉丁字符验证电子邮件地址,那么现在您 已准备好进行统治。另请参阅Email validation using regular expression in JSF 2 / PrimeFaces

答案 1 :(得分:0)

这对我有用。
您可以在“ validatorMessage”中编写自定义消息

 <h:form id="form">
        <h:outputLabel for="name">Name :</h:outputLabel>  
        <h:inputText id="name" value="#{editStock.name}" required="true" requiredMessage="Name field must not be empty" validatorMessage="Your name can have only Alphabets">  
        <f:validateRegex pattern="^[a-zA-Z]*$" />  
        </h:inputText><br/>  
        <h:message for="name" style="color:red" />
        <h:commandButton value="Update" action="#{stock.update(editStock)}" style="width: 80px;"></h:commandButton> 
 </h:form>