当一个长变量带有null值时,我找不到验证的方法。我必须验证BigDecimal和long变量,对于BigDecimal,我的自定义注释可以正常工作,但对于long类型则不起作用。我使用Number类来包装输入类型并验证值。
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = NotNullNumberValidator.class)
@Documented
public @interface NotNullNumber {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
我的NotNullNumberValidator
类
class NotNullNumberValidator implements ConstraintValidator<NotNullNumber, Number> {
@Override
public boolean isValid(Number value, ConstraintValidatorContext context) {
return value != null;
}
}
无旋转的使用
@NotNullNumber(message = "message for BigDecimal validation")
private BigDecimal subtotal; //works fine
@NotNullNumber(message = "message for long validation")
private long fechaPago;// not working}
我是在正确的方式,还是有其他方法可以做到这一点?@NotNull
注释不起作用。
编辑:我正在使用@RequestBody进行此验证,我想验证请求正文中是否存在JSON字段(长(fechaPago。我知道包装类Long是有效的,但我不能更改变量类型(这里的规则就是规则(。
我看到您使用的是不知道null的原语long,如果您将其转换为包装,验证器应该可以正常工作