java - Java Spring Boot中long类型变量的@NotZero注解

标签 java validation spring-boot annotations spring-annotations

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

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

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

最佳答案

如果您使用 hibernate,请考虑自定义 validator :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 {};
}

validator 逻辑:

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;
    }
}

您需要对 double 进行另一个约束,但模式是相同的。

关于java - Java Spring Boot中long类型变量的@NotZero注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52371668/

相关文章:

validation - 不能使用 boolean 验证 laravel 5

java - 西里尔字母验证

java - 在 Spring Boot 中重新创建查询

java - spring jpa - 必须存在至少一个 JPA 元模型*

java - 在当前主题中找不到样式 'floatingActionButtonStyle'

java - 为什么我的代码不能同时运行两个面板?当我运行它时它没有显示任何东西,但它编译

java - hibernate validator 的问题 - javax.persistence.RollbackException (spring)

eclipse - 如何在 Eclipse IDE 中导出 Spring Boot Gradle 项目?

Java FX 2 CSS 伪类

java - 如何使用 "extends"使用具有排他性绑定(bind)的泛型?