Java Springboot中long类型变量的@NotZero注解
@NotZero Annotation for long type variable in Java Springboot
我正在尝试为 long
和 float
类型变量构建一个 @NotZero
注释。对于具有非零约束的字符串,这应该像 @NotBlank
一样工作。
我已经尝试了 @Min
和 @Numeric
注释,但是这些都不能满足我的要求。在这种情况下,正则表达式似乎没有任何帮助不是字符串。我如何添加一个自定义函数来检查输入数字是否不为零并将其用作注释。
我的号码可以取 0.001、25、36.25 等任何严格正的 long
和 float
值。
如果您使用的是休眠,请考虑自定义验证器: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;
}
}
双打需要另一个约束,但模式是一样的。
我正在尝试为 long
和 float
类型变量构建一个 @NotZero
注释。对于具有非零约束的字符串,这应该像 @NotBlank
一样工作。
我已经尝试了 @Min
和 @Numeric
注释,但是这些都不能满足我的要求。在这种情况下,正则表达式似乎没有任何帮助不是字符串。我如何添加一个自定义函数来检查输入数字是否不为零并将其用作注释。
我的号码可以取 0.001、25、36.25 等任何严格正的 long
和 float
值。
如果您使用的是休眠,请考虑自定义验证器: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;
}
}
双打需要另一个约束,但模式是一样的。