1

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

<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 失去该输入。请告知如何做到这一点,谢谢。

另外,我想将有效域限制为 .com、.net、.org 对此有何建议?

4

1 回答 1

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"

当验证失败时,模型值永远不会更新,因此这将始终打印初始值,该值可能为空/空。您应该改为显示组件的提交值

validatorMessage="#{component.submittedValue} is not valid"
于 2012-09-25T15:14:23.150 回答