f:validateRegex似乎不起作用

时间:2017-09-21 15:49:32

标签: regex jsf

为什么这个正则表达式不起作用?我对此疯狂了

<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)?但是我甚至无法使第一个正则表达式

编辑: 我找到了答案。我错误地从我的代码示例中删除了转换器属性。有关详细信息,请参阅此帖子的答案。

1 个答案:

答案 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对象与正则表达式进行比较:当然,它返回了无效的答案。