Jsf f:validateRegex是否呈现为javascript?

Jsf f:validateRegex是否呈现为javascript?,jsf,primefaces,jsf-2.2,mojarra,Jsf,Primefaces,Jsf 2.2,Mojarra,我有一个p:inputText(PrimeFaces),其中包含一个f:validateRegex字段。我试图确保输入的信息符合格式。片段: <p:inputText id="usernameInput" required="true" validatorMessage="Invalid Email" value="#{sessionHandler.username}" > <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_

我有一个p:inputText(PrimeFaces),其中包含一个f:validateRegex字段。我试图确保输入的信息符合格式。片段:

<p:inputText id="usernameInput" required="true" validatorMessage="Invalid Email" value="#{sessionHandler.username}" >
    <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$"/>
    <f:ajax event="keyUp" render="emailMessage" />
</p:inputText>
<p:watermark for="usernameInput" value="Email"/>
<h:message id="emailMessage" />


f:validateRegex和f:ajax似乎不起作用(如果格式不正确,则不会显示消息)。当我查看呈现的HTML时,我注意到f:validateRegex和f:ajax都是这样显示的,而不是呈现的HTML组件或javascript字段。那么,我的问题是:f:validateRegex应该为客户端呈现为javascript吗?如果是,为什么渲染不正确

没有。JSF是一个HTML代码生成器<代码>标记不是HTML。浏览器只理解HTML,不理解JSF

这些症状表明您忘记在父元素中声明
f:
XML名称空间。例如

<html ... xmlns:f="http://xmlns.jcp.org/jsf/core">


这样,您就不会看到任何与
相关的内容。它完全是服务器端的。当您使用
keyup
(因此不是
keyup
)时,
应该转换为某些HTML DOM事件属性中的脚本,例如
onkeyup

我的命名空间上出现了“NLS缺少消息”警告。我相信我可能使用了不正确的名称空间。我使用了
xmlns:f=“http:/java.sun.com/jsf/core”
这是旧的JSF2.0/2.1名称空间,但在JSF2.2上应该同样有效。尝试升级Mojarra。在版本2.2.0/2.2.1/2.2.2中,XML名称空间注册中存在一些错误。如果错误仍然存在,则只需忽略并运行它,并在浏览器中验证是否一切正常。如果是这样,那么很可能只有您的编辑器(IDE)需要升级。