我正在使用正则表达式对输入进行电子邮件验证,如下所示:
<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 有关于此的任何建议吗?
答案 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"