如何对数值使用 f:validateRegex
How to use f:validateRegex on a numeric value
我将此正则表达式 ^(\+968|968|00968)?\d{8}$
用于 phone 号码。必须是8位数字,以9或7开头。
<p:inputText value="#{customer.phoneNo}" maxlength="8" required="true"
validatorMessage="Phone Number Should be 8 digits and start with 9,7">
<f:validateRegex pattern="^(\+968|968|00968)?\d{8}$"/>
<f:validateLength minimum="8" maximum="8"/>
<p:keyFilter mask="num"/>
</p:inputText>
但我收到此错误:
java.lang.Integer cannot be cast to java.lang.String
在 bean phone 中,数字是 Integer
。
表示java.lang.Integer不能java.lang.String需要转换
f:validateRegex
需要 String
值(或 CharSequence
,具体取决于 JSF 实现),因此它不能用于 Integer
。因此,您需要在 UI 中使用 String
值,并在将其保存到数据库之前将其转换为数字。如果您使用的是 JPA,则可以为此使用 AttributeConverter
。但我必须说,在我看来,将 phone 数字存储为数字数据库字段是一个奇怪的选择。
另请参阅:
我将此正则表达式 ^(\+968|968|00968)?\d{8}$
用于 phone 号码。必须是8位数字,以9或7开头。
<p:inputText value="#{customer.phoneNo}" maxlength="8" required="true"
validatorMessage="Phone Number Should be 8 digits and start with 9,7">
<f:validateRegex pattern="^(\+968|968|00968)?\d{8}$"/>
<f:validateLength minimum="8" maximum="8"/>
<p:keyFilter mask="num"/>
</p:inputText>
但我收到此错误:
java.lang.Integer cannot be cast to java.lang.String
在 bean phone 中,数字是 Integer
。
表示java.lang.Integer不能java.lang.String需要转换
f:validateRegex
需要 String
值(或 CharSequence
,具体取决于 JSF 实现),因此它不能用于 Integer
。因此,您需要在 UI 中使用 String
值,并在将其保存到数据库之前将其转换为数字。如果您使用的是 JPA,则可以为此使用 AttributeConverter
。但我必须说,在我看来,将 phone 数字存储为数字数据库字段是一个奇怪的选择。
另请参阅: