我正在尝试使用自定义Bean Validation来验证应大于零的数字值,但问题是如何使用以下单个自定义验证程序验证任何数字值:整数、浮点数、双精度....
@PositiveNumber Integer int;
@PositiveNumber Double double;
这种方法可行吗?
我正在尝试使用自定义Bean Validation来验证应大于零的数字值,但问题是如何使用以下单个自定义验证程序验证任何数字值:整数、浮点数、双精度....
@PositiveNumber Integer int;
@PositiveNumber Double double;
这种方法可行吗?
public class PositiveNumberValidator implements ConstraintValidator<PositiveNumber, Object> {
@Override
public void initialize(PositiveNumber constraintAnnotation) {
}
@Override
public boolean isValid(Object number, ConstraintValidatorContext context) {
if (number instanceof Integer) {
Integer num = (Integer) number;
return (num > 0);
} else if (number instanceof Double) {
Double num = (Double) number;
return (num > 0d);
} else if (number instanceof Long) {
Long num = (Long) number;
return (num > 0L);
} else if (number instanceof Float) {
Float num = (Float) number;
return (num > 0F);
}else{
return false;
}
}
}
我不确定你所说的“自定义Bean验证”的确切含义,但标准的做法是使用javax.validation.constraints.Min
,像这样:
@Min(value = 0)
@Pattern(regexp = "[\\s]*[0-9]*[1-9]+",message="msg")