sql*_*mmy 5 java hibernate-validator bean-validation
我正在尝试对该字段进行约束验证,如果输入不是整数,则必须拒绝。
public class ClientTO {
private Integer phone_num; //
}
Run Code Online (Sandbox Code Playgroud)
我试过:
1) @Digits- 它不验证输入是否为整数,因为您可以看到仍然抛出类型不匹配异常。
2)我的自定义验证 - 这似乎不适用于Integer字段
错误:
Exception in thread "main" javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.
Run Code Online (Sandbox Code Playgroud)
我的自定义验证类:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
请问有什么帮助吗?
@Digits 仅适用于原始类型。因此,如果您将实体更改为以下内容,您的验证应该会启动。
public class ClientTO {
@Digits(integer=10, fraction=0)
private int phone_num; // Constraint: phone_num can only be 10 digits long or less
...
}
Run Code Online (Sandbox Code Playgroud)
话虽如此,我相信您应该使用字符串来验证电话号码。
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
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6453 次 |
| 最近记录: |