我想测试inputText字段,看看它的内容是否匹配任何东西,但至少有一个&(&符号).
当我测试&或\&或\\&validateRegex的内侧的图案场,我总是收到此错误:
javax.faces.view.facelets.FaceletException:错误解析/index.xhtml:错误跟踪[line:71] Le nom de l'identitédoitimmédiatementuivrelecaractère"&"danslaréférenced'engeé.
我得到500错误......
我怎么能逃脱这个角色?
更新
我测试过了
<p:inputText id="player_name_register" value="#{login.name}">
<f:validateRegex pattern="[&]{3, 50}" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
但是当我用&&&&&&它测试时它不起作用.
我也测试过
<![CDATA[
<p:inputText id="player_name_register" value="#{login.name}">
<f:validateRegex pattern="[&]{3, 50}" />
</p:inputText>
]]>
Run Code Online (Sandbox Code Playgroud)
但我的inputText不再出现了.
Facelets是一种基于XML的视图技术.整个视图必须是语法上有效的XML.XML特殊字符喜欢&,<并且>需要被转义为&,<并且>当它们被解释为原样时.
<f:validateRegex pattern="...&..." />
Run Code Online (Sandbox Code Playgroud)
(这里...代表你的正则表达式的其余部分)
CDATA块无法正常工作,因为它基本上会逃避整个内容,包括JSF组件.引用转义的XML字符毫无意义.在由Facelets XML解析器解析之后,再次&成为&.
更新按照您的更新,在空间{3, 50}造成的正则表达式语法错误.去掉它.
<p:inputText id="player_name_register" value="#{login.name}">
<f:validateRegex pattern="[&]{3,50}" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
在JSF组件周围使用CDATA块根本不是正确的解决方案.它将XML转义整个内容,从而导致<p:inputText>发出普通的vanilla而不是组件的HTML表示.
| 归档时间: |
|
| 查看次数: |
4211 次 |
| 最近记录: |