【问题标题】:How to use f:validateRegex on a numeric value如何在数值上使用 f:validateRegex
【发布时间】:2021-04-20 16:35:15
【问题描述】:

我使用这个正则表达式^(\+968|968|00968)?\d{8}$ 来获取电话号码。必须为 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 不能转换为 java.lang.String

bean 中的电话号码是Integer

【问题讨论】:

标签: jsf


【解决方案1】:

f:validateRegex 需要一个 String 值(或 CharSequence,具体取决于 JSF 实现),因此它不能用于 Integer。因此,您需要在 UI 中使用 String 值并将其转换为数字,然后再将其保存到数据库中。如果您使用 JPA,您可以使用 AttributeConverter。但我必须说,将电话号码存储为数字数据库字段在我看来是一个奇怪的选择。

另见:

【讨论】:

    【解决方案2】:

    表示java.lang.Integer不能是java.lang.String,需要转换一下。

    【讨论】:

    • 怎么样?我将电话号码保存到数据库中,这是为了注册客户,电话号码在我的数据库中是整数
    猜你喜欢
    • 2012-10-12
    • 2014-07-18
    • 2012-10-13
    • 2014-11-13
    • 2014-04-30
    • 2016-08-19
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    相关资源
    最近更新 更多