如何在 JSF 页面中使用 validateRegex 验证 inputText 中的数字字符串

How to validate numeric strings in inputText with validateRegex in a JSF-Page

我有一个带有这个字符串的托管 bean 属性

private String itemNumber;

在 JSF 中,我想验证长度为 10 个字符的输入并且只允许数字。输入将有前面的零。例如“0000123456”

<h:inputText value="#{testBean.itemNumber}">
  <f:validateRegex pattern="\d\d\d\d\d\d\d\d\d\d" />
</h:inputText>

输入“asdf123456”后,我会收到一条漂亮的验证消息。 但是在输入“0000123456”时我会得到这个异常

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

怎么了?有什么想法吗?

将绑定到输入文本字段的支持 bean 中的变量声明为 Integer/Long/BigDecimal 并使用

<f:validateLength maximum="10" minimum="10" />

而不是 <f:validateRegex pattern="\d\d\d\d\d\d\d\d\d\d" />