これを行って、独自の検証アノテーションとバリデーターを作成します。
ValidCardType.java
(メソッド/フィールドに付ける注釈)
@Constraint(validatedBy = {CardTypeValidator.class})
@Documented
@Target( { ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidCardType {
String message() default "Incorrect card type, should be among: \"MasterCard\" | \"Visa\"";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
そして、チェックをトリガーするバリデーター
CardTypeValidator.java
:
public class CardTypeValidator implements ConstraintValidator<ValidCardType, String> {
private static final String[] ALL_CARD_TYPES = {"MasterCard", "Visa"};
@Override
public void initialize(ValidCardType status) {
}
public boolean isValid(String value, ConstraintValidatorContext context) {
return (Arrays.asList(ALL_CARD_TYPES).contains(value));
}
}
checkとよく似たことができます@NotNull
。
@NotNull
単なる注釈です。注釈はそれ自体では何もしません。コンパイル時に注釈プロセッサ、または実行時に注釈プロセッサを処理するものが必要です。