验证输入onblur / on focus lost

时间:2012-09-25 15:11:15

标签: validation jsf-2 primefaces

我正在使用正则表达式对输入进行电子邮件验证,如下所示:

<h:inputText id="email" value="#{settingsBean.aFriendEmail}" required="true" label="Email" validatorMessage="#{settingsBean.aFriendEmail} is not valid">
    <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
</h:inputText>
<p:message for="email" />

我想知道如何为该输入进行验证 onblur / on focus lost 。 请告知如何实现这一目标,谢谢。

另外,我想将有效域限制为.com,.net,.org 有关于此的任何建议吗?

1 个答案:

答案 0 :(得分:3)

添加挂在<f:ajax>事件上的blur,并在完成时更新消息。

<h:inputText id="email" ...>
    ...
    <f:ajax event="blur" render="emailMessage" />
</h:inputText>
<p:message id="emailMessage" for="email" />

通过正则表达式限制电子邮件域是一个与JSF完全无关的单独问题。


对于具体问题

无关,您的validatorMessage不对。

validatorMessage="#{settingsBean.aFriendEmail} is not valid"

验证失败时,模型值永远不会更新,因此始终打印初始值,该值可能为null / empty。您应该显示component's submitted value

validatorMessage="#{component.submittedValue} is not valid"