Annotation Interface ValidationTarget


@Target(METHOD) @Retention(RUNTIME) @Published public @interface ValidationTarget
階層構造を持つFormをバリデーションすることを表すアノテーション。

本アノテーションでは階層構造に応じて、3つの使い方を提供する。

Formの親子関係が1対1の場合の例を以下に示す。

 public class ExampleForm {

    // 子Formのプロパティを追加する。
    private User user;

    public ExampleForm(Map<String, Object> params) {
        user = (User) params.get("user");
    }

    // 子Formを設定するセッタに、本アノテーションを設定する。
    @ValidationTarget
    public void setUser(User user) {
        this.user = user;
    }

   // getterは省略

 }
 

Formの親子関係が1対多で、子の数が固定の場合の例を以下に示す。

 public class ExampleForm {

    // Form のプロパティに配列を追加する。
    private Address[] addressArray;

    public ExampleForm(Map<String, Object> params) {
        addressArray =  (Address[]) params.get("addressArray");
    }

    // getterは省略

    // 固定の配列長をsize()属性に設定する。
    @ValidationTarget(size = 3)
    public void setAddressArray(Address[] addressArray) {
        this.addressArray = addressArray;
    }
 }
 

Formの親子関係が1対多で、子の数が可変の場合の例を以下に示す。

※子の数が可変の場合は、sizeKey()を使用し、可変長項目をリクエストパラメータで送る必要がある。
 public class ExampleForm {

    // Formのプロパティに配列長を表すプロパティを追加する。
    private Address[] addressArray;
    private Integer addressArraySize;

    public ExampleForm(Map<String, Object> params) {
        addressArray =  (Address[]) params.get("addressArray");
        addressArraySize = (Integer) params.get("addressArraySize");
    }

    // getterは省略

    @Digits(integer=1)
    @Required
    @PropertyName("Address配列長")
    public void setAddressArraySize(Integer addressArraySize) {
        this.addressArraySize = addressArraySize;
    }

    // Form の配列のセッタに @ValidationTarget を設定する。
    // @ValidationTarget のsizeKey()属性に、配列長を表すプロパティ名を設定する。
    @ValidationTarget(sizeKey="addressArraySize")
    public void setAddressArray(Address[] addressArray) {
        this.addressArray = addressArray;
    }
 }
 
Author:
Koichi Asano
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    int
    配列のサイズ
    可変長配列のサイズ
  • Element Details

    • size

      int size
      配列のサイズ
      Default:
      0
    • sizeKey

      String sizeKey
      可変長配列のサイズ
      Default:
      ""