@DocumentedSE @TargetSE(valueSE=ANNOTATION_TYPESE) @RetentionSE(valueSE=RUNTIMESE) public @interface Constraint
特定の制約アノテーションは、制約検証実装のリストを参照する @Constraint
アノテーションによってアノテーションを付ける必要があります。
各制約アノテーションは、次の属性をホストする必要があります。
String message() default [...];
は、デフォルトで、制約の完全修飾クラス名とそれに続く .message
で構成されるエラーメッセージキーになります。たとえば "{com.acme.constraints.NotSafe.message}"
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
ジェネリクスとクロスパラメーターの両方である制約を作成する場合、制約アノテーションは validationAppliesTo()
プロパティをホストする必要があります。制約は、アノテーション付き要素を対象とする場合は一般的であり、メソッドまたはコンストラクターのパラメーターの配列を対象とする場合はクロスパラメーターです。
ConstraintTarget validationAppliesTo() default ConstraintTarget.IMPLICIT;このプロパティを使用すると、制約のユーザーは、制約が実行可能ファイルの戻り値の型をターゲットにするか、パラメーターの配列をターゲットにするかを選択できます。次の場合、制約は一般的であり、クロスパラメーターです。
ConstraintValidator
が制約にアタッチされています。1 つは ValidationTarget.ANNOTATED_ELEMENT
をターゲティングし、もう 1 つは ValidationTarget.PARAMETERS
をターゲティングします。ConstraintValidator
が ANNOTATED_ELEMENT
と PARAMETERS
の両方をターゲットとする場合。SupportedValidationTarget
を参照してください。制約定義の例を次に示します。
@Documented @Constraint(validatedBy = OrderNumberValidator.class) @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) public @interface OrderNumber { String message() default "{com.acme.constraint.OrderNumber.message}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }
修飾子と型 | 必須要素と説明 |
---|---|
ClassSE<? extends ConstraintValidator<?,?>>[] | validatedBy 制約を実装する ConstraintValidator クラス。 |
public abstract ClassSE<? extends ConstraintValidator<?,?>>[] validatedBy
ConstraintValidator
クラス。指定されたクラスは、指定された ValidationTarget
の異なるターゲット型を参照する必要があります。2 つの ConstraintValidator
が同じ型を参照している場合、例外が発生します。 メソッドまたはコンストラクターのパラメーターの配列(クロスパラメーター)をターゲットとする最大 1 つの ConstraintValidator
が受け入れられます。2 つ以上存在する場合、例外が発生します。
ConstraintValidator
クラスの配列 Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.