【问题标题】:@NotZero Annotation for long type variable in Java SpringbootJava Spring Boot中长类型变量的@NotZero注解
【发布时间】:2019-02-21 14:38:35
【问题描述】:

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

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

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

【问题讨论】:

  • 您将无法存储浮点数,例如0.001 变成 long。您需要使用float 或其他支持小数值的。

标签: java validation spring-boot annotations spring-annotations


【解决方案1】:

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

双打需要另一个约束,但模式是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多