primefaces inputText 输入字符串,但只允许数字

primefaces inputText enter string, but only allow digits

我有一个 primefaces p:inputText,我希望用户在其中输入一个整数,但数据类型必须保持为字符串,因为我使用带有 @javax.validation.constraints.Size 的服务器端 bean 验证(这就是整数转换器不起作用的原因,我从 Hibernate 验证器中得到了一个 ClassCastExcpetion)。我这样做是因为 seam bean 在其他场合也用于存储字符串。

理想情况下,我希望用户只能在字段中输入数字,因此我使用了 "onkeypressed" 和不同的 regexes/keycodes,但我找不到适用于 [=28] 的解决方案=]、Firefox 和 IE。

有什么想法吗?

编辑:

我尝试了 f:validateRegex,但奇怪的是,只有当我在 p:inputText 中省略 type="number" 时,验证才有效。此外,Paul Wasilewski 发布的解决方案在 input="number" 的情况下不起作用(至少在 firefox 上)

如果您还没有尝试过。一个解决方案是

<p:inputText ... onkeydown="return event.keyCode &gt;= 48 &amp;&amp; event.keyCode &lt;= 57 || event.keyCode == 8" ... />