这是我自己的约束
@Digits(fraction = 0, integer = 5, message = "ID should be up to {integer} digits")
@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
@Documented
public @interface ValidId {
String message() default "Invalid ID";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
实施:
@Override
public void deleteClient(@ValidId Long id) throws ValidationException {
Set<ConstraintViolation<Long>> violations = this.validator.validate(id);
ValidationHandler.handleViolations(violations);
}
所以我传递的是无效值,如4565465165,验证完成后,我发现了cero违规行为。事实是,如果我在没有注释的情况下直接使用javax.validation.constraints.Digits进行验证,那么它既不起作用,也不会起作用:
@Override
public void deleteClient(@Digits(fraction = 0, integer = 5) Long id) throws ValidationException {
Set<ConstraintViolation<Long>> violations = this.validator.validate(id);
ValidationHandler.handleViolations(violations);
}
然后我再也没有违规。你知道我做错了吗?