Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2.0ValidateRegex带有自己的验证程序消息_Regex_Jsf 2_Message_Validation_Textinput - Fatal编程技术网

JSF2.0ValidateRegex带有自己的验证程序消息

JSF2.0ValidateRegex带有自己的验证程序消息,regex,jsf-2,message,validation,textinput,Regex,Jsf 2,Message,Validation,Textinput,我的代码与此类似: <h:inputText id="email" value="#{managePasswordBean.forgotPasswordEmail}" validatorMessage="#{validate['constraints.email.notValidMessage']}" requiredMessage="#{validate['constraints.email.emptyMessage']}" validat

我的代码与此类似:

<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标记的Validator消息覆盖

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


感谢您的帮助:)

您不能为每个验证器定义单独的
验证器消息。您所能做的最好的事情就是在您的自定义验证器中进行正则表达式验证,这样您就可以删除
验证器消息


更新:自1.3版以来,JSF实用程序库的组件允许您根据每个验证器设置验证器消息。然后,您的具体案例可以通过以下方式解决:

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


与具体问题无关:现在,只要你仍然验证基于拉丁字符的电子邮件地址,你就不会准备好统治世界。另请参见。

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


姓名:


您可以更改所有消息,但不能为应用程序中的每个组件指定特定消息。看看这个:哇,不能设置自定义错误消息会让jsf验证变得毫无用处!代码只是Java垃圾邮件,不值得它在我的硬盘上占用20%的硬盘空间。Omnifaces解决方案不适合我。遵循showcase,但仍然有JSF验证消息。对我的自定义消息没有任何提示…这是OmniFaces 1.3以来的新消息。确保您至少拥有OmniFaces 1.3。
 <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>