Annotation Interface InjectForm


フォームをリクエストスコープに設定するInterceptor

本インターセプタでは次の2つの機能を提供する。

バリデーションや初期化処理を行ったフォームをリクエストスコープに設定する

本インターセプタは業務アクションハンドラに次のように実装する。
     @InjectForm(form = UserForm.class, prefix = "form", validate = "register")
     @OnError(type = ApplicationException.class, path = "forward://registerForm.html")
     public HttpResponse handle(HttpRequest req, ExecutionContext ctx) {

         UserForm form = ctx.getRequestScopedVar("form");

         // 以下、省略
     }
 
上記のような@InjectFormアノテーションが指定されたメソッドは、 メソッド実行前に以下の処理順でフォームが生成され、リクエストスコープに設定される。
  1. 指定のvalidationStrategyに従って、バリデーションを実行し、フォームを生成する。
  2. initialize()属性が指定されていれば、初期化処理を実行する。
    1. デフォルトコンストラクタでフォームを生成する。
    2. 指定の初期化メソッドを実行する。
    3. バリデーションを実行して生成したフォームから初期化したフォームへ値をコピーする。
  3. 生成したフォームをname()属性の名前でリクエストスコープに設定する。

指定されたバリデーションエンジンでバリデーションを行う

validationStrategyという名前でコンポーネントを定義することでバリデーションエンジンを指定できる。
     //指定例 (Bean Validation)
     <component name="validationStrategy"
                class="nablarch.core.validation.ee.BeanValidationStrategy" />
 
デフォルトではNablarchValidationStrategyが使用される。

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    InjectFormアノテーションのインターセプタ。
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Class<? extends Serializable>
    対象のフォームクラス。(必須属性)
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    初期化メソッド。
    フォームをリクエストスコープに設定する際に使用する変数名。(デフォルトは"form")
    フォームに設定するパラメータのプレフィックス。(デフォルトは空文字)
    バリデーション対象メソッド。
    Class<?>[]
    Bean Validationのグループ。
  • Element Details

    • form

      Class<? extends Serializable> form
      対象のフォームクラス。(必須属性)
    • prefix

      String prefix
      フォームに設定するパラメータのプレフィックス。(デフォルトは空文字)
      Default:
      ""
    • name

      String name
      フォームをリクエストスコープに設定する際に使用する変数名。(デフォルトは"form")
      Default:
      "form"
    • initialize

      String initialize
      初期化メソッド。
           対象のフォームクラスに以下のシグネチャでインスタンスメソッドとして実装する。
      public void <メソッド名>(HttpRequest request, ExecutionContext context)
      初期化メソッドは、フォームの初期値(固定値または画面遷移時に復元する入力値)を設定する際に使用する。
      Default:
      ""
    • validate

      String validate
      バリデーション対象メソッド。
           ValidateForで設定した文字列を指定する。
       
      Default:
      ""
    • validationGroup

      Class<?>[] validationGroup
      Bean Validationのグループ。
      Default:
      {}