使用Bean Validation验证正数

3

我正在尝试使用自定义Bean Validation来验证应大于零的数字值,但问题是如何使用以下单个自定义验证程序验证任何数字值:整数、浮点数、双精度....

@PositiveNumber Integer int;

@PositiveNumber Double double;

这种方法可行吗?

3个回答

2
我使用以下解决方案解决了这个问题。
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;
        }
    }
}

什么是PositiveNumber类。 - Rodrigo Araujo

1

我不确定你所说的“自定义Bean验证”的确切含义,但标准的做法是使用javax.validation.constraints.Min,像这样:

@Min(value = 0)

1
根据https://javaee.github.io/tutorial/bean-validation002.html @Min适用于整数值。 - Simeon

0
你正在寻找自然数,我认为你可以使用正则表达式模式来获取所需的输出,类似于以下内容:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接