使用Bean验证验证正数

时间:2015-12-14 02:57:47

标签: java validation javabeans

我正在尝试使用自定义Bean验证来验证应该大于零的数值,但问题是验证任何数值:Integer,Float,Double ....使用单个自定义验证器,如下所示:< / p>

@PositiveNumber 整数int;

@PositiveNumber 双倍双倍;

这可能吗?

3 个答案:

答案 0 :(得分:1)

我使用以下解决方案解决了这个问题。

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;
        }
    }
}

答案 1 :(得分:0)

您正在寻找自然数字,我认为您可以使用正则表达式模式来获得所需的输出,类似

  

@Pattern(regexp = "[\\s]*[0-9]*[1-9]+",message="msg")

答案 2 :(得分:0)

我不确定“自定义Bean验证”的先决条件到底意味着什么,但是一种标准的方法是像这样使用javax.validation.constraints.Min

@Min(value = 0)