繁体   English   中英

Java Springboot中长类型变量的@NotZero注释

[英]@NotZero Annotation for long type variable in Java Springboot

我正在尝试为longfloat类型的变量构建一个@NotZero批注。 对于具有非零约束的字符串,这应该像@NotBlank一样工作。

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

我的数字可以采用0.001、25、36.25等任何严格为正的longfloat值。

如果您使用的是休眠模式,请考虑使用自定义验证器: 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;
    }
}

您可能需要另一个约束来限制双打,但是模式是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM