Facelets是一种基于XML的视图技术。整个视图必须是语法上有效的XML。XML特殊字符像
&,
<并且
>需要被转义为
&,
<并且
>当他们应该被解释为,是。
<f:validateRegex pattern="...&..." />
(在这里,...
代表您的正则表达式的其余部分)
CDATA块将不起作用,因为它基本上会转义包括JSF组件在内的整个内容。引用转义的XML字符没有任何意义。在经过Facelets
XML解析器解析后,再次
&变为
&。
更新 按照您的更新,在空间
{3, 50}造成的正则表达式语法错误。去掉它。<p:inputText id="player_name_register" value="#{login.name}"> <f:validateRegex pattern="[&]{3,50}" /></p:inputText>在JSF组件周围使用CDATA块根本不是正确的解决方案。它将对所有内容进行XML转义,从而
<p:inputText>发出纯净的香草味,而不是组件的HTML表示形式。



