@Documented @Target(value=METHOD) @Retention(value=RUNTIME) @Interceptor(value=nablarch.common.web.interceptor.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
を送出する。
InjectForm.initialize()
属性が指定されていれば、初期化処理を実行する。
InjectForm.name()
属性の名前でリクエストスコープに設定する。
//指定例 (Bean Validation)
<component name="validationStrategy"
class="nablarch.core.validation.ee.BeanValidationStrategy" />
デフォルトではNablarchValidationStrategy
が使用される。
public abstract Class<?> form
public abstract String prefix
public abstract String name
public abstract String initialize
対象のフォームクラスに以下のシグネチャでインスタンスメソッドとして実装する。
public void <メソッド名>(HttpRequest request, ExecutionContext context)
初期化メソッドは、フォームの初期値(固定値または画面遷移時に復元する入力値)を設定する際に使用する。
public abstract String validate
ValidateFor
で設定した文字列を指定する。