使用 Bean Validation 验证正数
Validate positive number with Bean Validation
我正在尝试使用自定义 Bean 验证来验证应大于零的数值,但问题是验证任何数值:整数、浮点数、双精度....使用单个自定义验证器,如下所示:
@PositiveNumber
整数 int;
@PositiveNumber
双双;
这可能吗?
我使用以下解决方案解决了这个问题。
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;
}
}
}
您正在寻找自然数,我认为您可以使用 regex 模式来获得所需的输出,类似的东西
@Pattern(regexp = "[\s]*[0-9]*[1-9]+",message="msg")
我不确定 "custom Bean Validation" 的先决条件到底是什么意思,但标准方法是像这样使用 javax.validation.constraints.Min
@Min(value = 0)
我正在尝试使用自定义 Bean 验证来验证应大于零的数值,但问题是验证任何数值:整数、浮点数、双精度....使用单个自定义验证器,如下所示:
@PositiveNumber 整数 int;
@PositiveNumber 双双;
这可能吗?
我使用以下解决方案解决了这个问题。
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;
}
}
}
您正在寻找自然数,我认为您可以使用 regex 模式来获得所需的输出,类似的东西
@Pattern(regexp = "[\s]*[0-9]*[1-9]+",message="msg")
我不确定 "custom Bean Validation" 的先决条件到底是什么意思,但标准方法是像这样使用 javax.validation.constraints.Min
@Min(value = 0)