|
|||||||||
前のパッケージ 次のパッケージ | フレームあり フレームなし |
参照先:
説明
例外の概要 | |
---|---|
ParameterValidationException | パラメータのバリデーションに失敗した場合に発生する例外。 |
ValidationException | バリデーションに失敗した場合に発生する例外。 |
ValidationProcessException | バリデーションが行えない場合に発生する例外。 |
アノテーションベースのパラメータ検証フレームワークを提供します。
@Retention(RetentionPolicy.RUNTIME) @ValidatorClass(NotEmptyValidator.class) public @interface Validation { String value(); }
検証マーカアノテーションのRetentionはRUNTIMEである必要がある。
検証マーカアノテーションは、実装クラスを指定するアノテーションとして、@ValidatorClassアノテーションを持つ。 @ValidatorClass アノテーションでは、ValidatorImplを継承した検証実装クラスを指定する。
検証マーカアノテーションは、パラメータを持つことができる。検証実装クラスはこのパラメータを利用して、検証方法を判断することができる。
検証実装クラスは、以下のインタフェースを実装したクラスである
public interface ValidatorImpl<T extends Annotation, U> { void validate(T annotation, U value) throws ValidationException; }
validateメソッドには、検証マーカアノテーションと、パラメータの値が渡される。検証実装クラスでは、マーカアノテーションに指定されたパラメータを 使用して(存在する場合)valueパラメータの値を検証する。検証に失敗した場合、ValidationExcptionを発生させる。
以下に、パラメータとして渡される文字列が空でないかを検証する例を示す。
public class Test{ @ValidatedMethod public void test(@NotEmpty Strnig value){ System.out.println(value); } } public aspect TestValidationAspect extends ParameterValidationAspect<Test> { }
@Retention(RetentionPolicy.RUNTIME) @ValidatorClass(ArrayElementValidator.class) public @interface EachNotEmpty { NotEmpty value() default @NotEmpty; }
@Retention(RetentionPolicy.RUNTIME) @ValidatorClass(FieldValidator.class) public @interface FieldNotEmpty { String name(); NotEmpty value() default @NotEmpty; }