我正在尝试对字段进行约束验证,如果输入不是整数,则该字段必须拒绝。
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;
}
}
请帮忙吗?
答案 0 :(得分:3)
@Digits will only work for primitive types。 因此,如果您将实体更改为以下内容,则应该开始进行验证。
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
...
}