@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
が使用される。
Modifier and Type | Required Element and Description |
---|---|
java.lang.Class<? extends java.io.Serializable> |
form
対象のフォームクラス。(必須属性)
|
Modifier and Type | Optional Element and Description |
---|---|
java.lang.String |
initialize
初期化メソッド。
|
java.lang.String |
name
フォームをリクエストスコープに設定する際に使用する変数名。(デフォルトは"form")
|
java.lang.String |
prefix
フォームに設定するパラメータのプレフィックス。(デフォルトは空文字)
|
java.lang.String |
validate
バリデーション対象メソッド。
|
public abstract java.lang.Class<? extends java.io.Serializable> form
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
で設定した文字列を指定する。