问题描述
当长变量带有空值时,我找不到一种验证方法。我必须验证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,如果将其转换为包装器,验证器应该可以正常工作