6.4.2. JAX-RS BeanValidationハンドラ

本ハンドラは、リソース(アクション)クラスが受け取るForm(Bean)に対して、Bean Validation を実行する。 バリデーションでバリデーションエラーが発生した場合には、後続のハンドラに処理は委譲せずに、 ApplicationException を送出して処理を終了する。

本ハンドラでは、以下の処理を行う。

  • リソース(アクション)クラスのメソッドが受け取るFormに対する Bean Validation を行う。

処理の流れは以下のとおり。

../../../../_images/flow16.png

6.4.2.2. モジュール一覧

<dependency>
  <groupId>com.nablarch.framework</groupId>
  <artifactId>nablarch-fw-jaxrs</artifactId>
</dependency>

<!-- Bean Validationのモジュール -->
<dependency>
  <groupId>com.nablarch.framework</groupId>
  <artifactId>nablarch-core-validation-ee</artifactId>
</dependency>

6.4.2.3. 制約

リクエストボディ変換ハンドラ よりも後ろに設定すること
このハンドラは、 リクエストボディ変換ハンドラ がリクエストボディから変換したForm(Bean)に対してバリデーションを行うため。

6.4.2.4. リソース(アクション)で受け取るForm(Bean)に対してバリデーションを実行する

リソース(アクション)のメソッドで受け取るForm(Bean)に対して、バリデーションを実行したい場合は、 そのメソッドに対して Valid アノテーションを設定する。

以下に例を示す。

// Personオブジェクトに対してバリデーションを実行したいので、
// Validアノテーションを設定する。
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Valid
public HttpResponse save(Person person) {
    UniversalDao.insert(person);
    return new HttpResponse();
}