为什么这个正则表达式不起作用?我对此疯狂了
<p:inputText id="test" validatorMessage="error message">
<p:ajax event="change" update="msg test" />
<f:validateRegex pattern="[0-9]{1,7}" />
</p:inputText>
当我输入值“65432”时,我收到了validatorMessage
我实际上打算使用这个正则表达式(\d\d{0,2})(((,\d{3}){0,2})|(\d{0,6}))( USD)?
但是我甚至无法使第一个正则表达式
编辑: 我找到了答案。我错误地从我的代码示例中删除了转换器属性。有关详细信息,请参阅此帖子的答案。
答案 0 :(得分:0)
我找到了答案。我错误地从我的代码示例中删除了转换器属性。这应该是它应该是:
<p:inputText id="test" validatorMessage="error message" converter="someConverter">
<p:ajax event="change" update="msg test" />
<f:validateRegex pattern="[0-9]{1,7}" />
</p:inputText>
事实证明,JSF并没有像我想的那样在进入转换器之前验证正则表达式。我的转换器删除了逗号并将字符串值放入Long对象。然后,如果我的理解是准确的,JSF就会尝试将Long对象与正则表达式进行比较:当然,它返回了无效的答案。