Java JSF、validateRegex和&;(安培)

Java JSF、validateRegex和&;(安培),java,regex,jsf,Java,Regex,Jsf,我想测试inputText字段,看看它的内容是否匹配任何内容,但至少有一个&(和) 当我在validateRegex的模式字段内测试&或\&或\\&时,我总是收到以下错误: javax.faces.view.facelets.FaceletException:Error-Parsing/index.xhtml:Error-tracked[line:71]Le nom de l'identitédoit immédiation suivre Le caractère”和“dans la référ

我想测试inputText字段,看看它的内容是否匹配任何内容,但至少有一个&(和)

当我在validateRegex的模式字段内测试
&
\&
\\&
时,我总是收到以下错误:

javax.faces.view.facelets.FaceletException:Error-Parsing/index.xhtml:Error-tracked[line:71]Le nom de l'identitédoit immédiation suivre Le caractère”和“dans la référence d'entité”

我得到了500个错误

我怎样才能摆脱这个角色


更新

我已经测试过了

<p:inputText id="player_name_register" value="#{login.name}">
    <f:validateRegex pattern="[&amp;]{3, 50}" />
</p:inputText>
但是我的输入文本不再显示。

使用标记转义符号(&):


]]>
如果要在Javascript中转义符号和,lt(),请在Javascript中添加CDATA部分,但对其进行注释:

<script>
    //<![CDATA[
    funcion lessThan(a, b) {
        return a < b; //no problems in Facelets
    }
    //]]>
</script>

//

带引号的字符串检查有帮助吗<代码>'&;'

Facelets是一种基于XML的视图技术。整个视图必须是语法有效的XML。与
&
类似,
需要作为
&
时,它们应该被解释为是


(此处,
表示正则表达式的剩余部分)

CDATA块不起作用,因为它基本上会转义整个内容,包括JSF组件。引用转义的XML字符毫无意义。在被FaceletsXML解析器解析后,
&再次变成
&


Update根据您的更新,
{3,50}
中的空格导致regex语法错误。移除它



在JSF组件周围使用CDATA块根本不是正确的解决方案。它将XML转义整个内容,导致
p:inputText
以普通方式发出,而不是组件的HTML表示。

这在尝试打印小于()等其他符号时没有帮助。它不需要引用。我的回答是为了检查java方面,我想我误解了:(CDATA非常适合JS代码,但不适合JSF组件。请先自己试用,并查看生成的HTML输出。谢谢,这是导致问题的空间。问题解决了!
<![CDATA[
<h:outputText value="Sun & Moon" />
]]>
<script>
    //<![CDATA[
    funcion lessThan(a, b) {
        return a < b; //no problems in Facelets
    }
    //]]>
</script>