Integer字段的Bean验证



我正在尝试对字段进行约束验证,如果输入不是整数,则必须拒绝。

public class ClientTO {
       private Integer phone_num; //
}

我试过了:

1( @Digits-它不会验证输入是否为整数,因为您可以看到类型不匹配的异常仍然被抛出。

2( 我的自定义验证-似乎不适用于Integer字段

错误:

Exception in thread "main" javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.

我的自定义验证类:

public class X_CVAImpl implements ConstraintValidator<X_CustomValidatorAnnotation,String>{  
    public boolean isValid(String value, ConstraintValidatorContext context) {
        // TODO Auto-generated method stub
        boolean val_d;
        if (value.matches("[0-9]+") && value.length() ==10) {
            val_d=true;
        }else {
            val_d=false;            
        }
        return val_d;
    }
}

请帮忙吗?

@Digits仅适用于基元类型。因此,如果您将实体更改为以下实体,您的验证应该会生效。

public class ClientTO {
   @Digits(integer=10, fraction=0)
   private int phone_num; // Constraint: phone_num can only be 10 digits long or less
   ...
}

话虽如此,我认为您应该使用字符串来验证电话号码。

public class ClientTO {
   @Size(min=10, max=10)
   @Pattern(regexp="(^[0-9]{10})")
   private String phone_num; // Constraint: phone_num would match 10 digits number
   ...
}

最新更新