@Documented @Target(value=METHOD) @Retention(value=RUNTIME) @Interceptor(value=InjectForm.Impl.class) @Published public @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
アノテーションが指定されたメソッドは、
メソッド実行前に以下の処理順でフォームが生成され、リクエストスコープに設定される。
ApplicationException
を送出する。
initialize()
属性が指定されていれば、初期化処理を実行する。
name()
属性の名前でリクエストスコープに設定する。
//指定例 (Bean Validation)
<component name="validationStrategy"
class="nablarch.core.validation.ee.BeanValidationStrategy" />
デフォルトではNablarchValidationStrategy
が使用される。
修飾子とタイプ | 必須要素と説明 |
---|---|
java.lang.Class<? extends java.io.Serializable> |
form
対象のフォームクラス。
|
修飾子とタイプ | 任意要素と説明 |
---|---|
java.lang.String |
initialize
初期化メソッド。
|
java.lang.String |
name
フォームをリクエストスコープに設定する際に使用する変数名。
|
java.lang.String |
prefix
フォームに設定するパラメータのプレフィックス。
|
java.lang.String |
validate
バリデーション対象メソッド。
|
public abstract java.lang.String name
public abstract java.lang.String initialize
対象のフォームクラスに以下のシグネチャでインスタンスメソッドとして実装する。
public void <メソッド名>(HttpRequest request, ExecutionContext context)
初期化メソッドは、フォームの初期値(固定値または画面遷移時に復元する入力値)を設定する際に使用する。
public abstract java.lang.String validate
ValidateFor
で設定した文字列を指定する。