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

时间:2014-01-30 18:28:32

标签: jsf validation

我需要验证表单中的两个字段:电子邮件和名称。电子邮件应与patern a.a@x.x匹配,名称应仅包含字母。

我有custom-faces-messages.properties,当模式不匹配时我需要显示的消息。

  

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

然而,我想以非常丑陋的方式显示模式而不是{0},而是希望为每次验证显示自定义文本。名称的前缀应为“姓名只能包含字母”,电子邮件中的电子邮件与模式不符。例a.a@x.x'

有没有办法使用属性文件?

提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果您的电子邮件和名称字段已实施为h:inputText,那么您可以使用validatorvalidatorMessage属性来实现此目的。请参阅JSF VDL document

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

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

第三种方式:在支持bean中检查它并显示你想要的消息。

答案 1 :(得分:0)

是的,有一种方法可以从属性文件中调用它。 我这样做。在项目的properties包下创建一个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>

(your.src.bla.properties.message)不要将properties.message部分更改为反向。

并将此行添加到message.properties文件:

javax.faces.validator.RegexValidator.NOT_MATCHED="Your message comes here"

现在停止并启动您的项目,因为它可能没有热插拔。 你会在对话框中看到你的消息,弹出屏幕的右上角。