@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.