gpt4 book ai didi

java - JSF、validateRegex 和 &(符号)

转载 作者:行者123 更新时间:2023-11-30 05:50:53 34 4
gpt4 key购买 nike

我想测试 inputText 字段以查看它的内容是否匹配除至少一个 &(与号)之外的任何内容。

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

javax.faces.view.facelets.FaceletException: Error Parsing /index.xhtml: Error Traced[line: 71] Le nom de l'identité doit immédiatement 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>

但是当我用 &&&&&& 测试时,它不起作用。

我也测试过

<![CDATA[
<p:inputText id="player_name_register" value="#{login.name}">
<f:validateRegex pattern="[&amp;]{3, 50}" />
</p:inputText>
]]>

但我的 inputText 不再出现了。

最佳答案

Facelets 是一种基于 XML 的 View 技术。整个 View 必须是语法上有效的 XML。 XML special characters喜欢& , <>需要转义为 &amp; , &lt;&gt;当它们应该按原样解释时。

<f:validateRegex pattern="...&amp;..." />

(此处,... 代表正则表达式的其余部分)

CDATA block 将不起作用,因为它基本上转义了整个内容,包括 JSF 组件。引用转义的 XML 字符没有意义。在被 Facelets XML 解析器解析后,&amp;变成 &再次。


更新 根据你的更新,{3, 50}中的空间导致正则表达式语法错误。将其删除。

<p:inputText id="player_name_register" value="#{login.name}">
<f:validateRegex pattern="[&amp;]{3,50}" />
</p:inputText>

在 JSF 组件周围使用 CDATA block 根本不是正确的解决方案。它会对整个内容进行 XML 转义,导致 &lt;p:inputText&gt;被发出普通 Vanilla 而不是组件的 HTML 表示。

关于java - JSF、validateRegex 和 &(符号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462136/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com