我有一个这样的自定义验证器:
@Retention(RetentionPolicy.RUNTIME)
@NotBlank(message = "{state.NotBlank}") // Err...it doesn't work
@Constraint(validatedBy = { State.Validator.class })
public @interface State {
String message() default "{state.invalid}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
@Component
final class Validator implements ConstraintValidator<State, String> {
@Override
public void initialize(final State constraintAnnotation) { }
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// return true or false based on some rules
}
}
}
但是我无法通过State
来对@NotBlank
进行注释,因为后者在ElementType.TYPE
中没有@Target
),而是对其进行了注释。字段@NotBlank
本身。
我想在State
中使用它的原因是因为我必须对多个字段重复相同的约束,所以如果可以用State
注释@NotBlank
将会是完美的。
有任何线索吗?
答案 0 :(得分:0)
你不能。您需要定义一个新的注释,因为@NotBlank具有以下目标:
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
如您所见,您不能将其应用于完整界面。