代码之家  ›  专栏  ›  技术社区  ›  krozaine

@javaspringboot中长类型变量的NotZero注释

  •  0
  • krozaine  · 技术社区  · 6 年前

    我想建立一个 @NotZero long float 类型变量。应该是这样的 @NotBlank

    我试过了 @Min @Numeric 但这些不足以满足我的要求。在这种情况下,Regex似乎没有任何帮助,因为它不是一个字符串。如何添加一个自定义函数来检查输入数字是否为零,并将其用作注释。

    我的数字可以取0.001,25,36.25等任何严格的正值 长的 浮动

    1 回复  |  直到 6 年前
        1
  •  2
  •   Mike    6 年前

    如果您使用的是hibernate,请考虑使用自定义验证器: https://www.baeldung.com/spring-mvc-custom-validator

    注释定义:

    @Documented
    @Constraint(validatedBy = NonZeroFloatValidator.class)
    @Target( { ElementType.METHOD, ElementType.FIELD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface NonZeroFloatConstraint {
        String message() default "Float value is zero";
        Class<?>[] groups() default {};
        Class<? extends Payload>[] payload() default {};
    }
    

    验证程序逻辑:

    public class NonZeroFloatValidator implements ConstraintValidator<NonZeroFloatConstraint, Float>
    {    
        @Override
        public void initialize(NonZeroFloatConstraint cons) {}
    
        @Override
        public boolean isValid(Float f, ConstraintValidatorContext cxt)
        {
            return Float.compare(f, 0.0f) != 0;
        }
    }