【问题标题】:Validate positive number with Bean Validation使用 Bean Validation 验证正数
【发布时间】:2015-12-14 02:57:46
【问题描述】:

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

@PositiveNumber 整数int;

@PositiveNumber 双双;

这可能吗?

【问题讨论】:

    标签: java validation javabeans


    【解决方案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;
            }
        }
    }
    

    【讨论】:

    • 什么是 PositiveNumber 类。
    【解决方案2】:

    我不确定“自定义 Bean 验证”的先决条件到底是什么意思,但执行此操作的标准方法是像这样使用 javax.validation.constraints.Min

    @Min(value = 0)
    

    【讨论】:

    【解决方案3】:

    您正在寻找自然数,我认为您可以使用 regex 模式来获得所需的输出,就像这样

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

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 2019-03-25
      相关资源
      最近更新 更多