用于正则表达式的jsf多个自定义验证器消息

用于正则表达式的jsf多个自定义验证器消息,jsf,validation,Jsf,Validation,我需要验证表单中的两个字段:email和name。该电子邮件应与Patren a匹配。a@x.x并且名称应该只包含字母 我有custom-faces-messages.properties,其中包含模式不匹配时需要显示的消息 javax.faces.validator.RegexValidator.NOT_MATCHED={1}:验证 错误:值不符合模式“{0}” 但是,我希望为每个验证显示一个自定义文本,而不是以非常丑陋的方式显示模式的{0}。例如,对于名称,它应该是“名称只能包含字母”,对于

我需要验证表单中的两个字段:email和name。该电子邮件应与Patren a匹配。a@x.x并且名称应该只包含字母

我有custom-faces-messages.properties,其中包含模式不匹配时需要显示的消息

javax.faces.validator.RegexValidator.NOT_MATCHED={1}:验证 错误:值不符合模式“{0}”

但是,我希望为每个验证显示一个自定义文本,而不是以非常丑陋的方式显示模式的{0}。例如,对于名称,它应该是“名称只能包含字母”,对于电子邮件,“电子邮件与模式不匹配”。例a。a@x.x"

有没有办法使用属性文件来实现这一点


提前感谢。

如果您的电子邮件和姓名字段实现为
h:inputText
,那么您可以使用
验证程序
验证消息
属性。看

第二种(更复杂的)方法:创建自己的验证器。我有自己的电子邮件验证器,我在应用程序中这样称呼它:

<h:inputText id="email" label="#{msg.email}"
    value="#{registrationForm.email}"
    size="40" maxlength="80" required="true">
    <f:converter converterId="lowerCase" />
    <f:validator validatorId="email-validator" />
</h:inputText>


第三种方法:在backingbean中检查它并显示您想要的消息。

是的,有一种方法可以从您的属性文件中调用它。 我是这样做的。在项目的属性包下创建message.properties文件。(我的路径是:src/main/bla.bla.bla/bean/properties/message.properties)

现在

/src/main/webapp/WEB-INF/faces-config.xml编辑此文件。 在下面添加这些行

<application> 
   your.src.bla.properties.message (this is path to message.properties file)
</application>
现在停止并启动您的项目,因为它可能不是热交换的。
您将在对话框中看到您的消息,在屏幕右角弹出窗口。

您希望每个字段都有一条特定的新消息吗?尽管可以替换
{0}
{1}
,但这似乎不可能。是的,我希望有特定的不同消息。。有没有办法将一些参数传递到属性文件或其他文件?
javax.faces.validator.RegexValidator.NOT_MATCHED="Your message comes here"