ど忘れしている、というかよく覚えていない。
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws HttpSessionRequiredException {
command って何だっけ?
答えは config ファイルで設定していた。
<bean id="htmlEscapeFormController" class="yt.uxtool.presentation.HtmlEscapeController">
<property name="commandClass"><value>yt.uxtool.domain.HtmlEscapeEntry</value></property>
<property name="formView"><value>htmlEscapeView</value></property>
<property name="successView"><value>htmlEscapeView</value></property>
</bean>
次のメソッドもオーバーライドしているがなぜやっているのか思い出せない。
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
log.debug("invoke: session[" + request.getSession(false) + "]");
request.setAttribute("htmlEscape", "true");
return super.formBackingObject(request);
}
答えは AbstractFormController の API ref にあった。onSubmit() は bind,
validate にエラーがなかった場合にのみ呼ばれる。そのため、エラーにかかわらず
リクエストプロパティをビューに渡したいときなどに formBackingObject()
でセットしてやるとよい。忘れずに super.formBackingObject() を呼ぶこと。
納得して POJO を作ってみる。int フィールドがいるのだが、validation
は自前でする必要があるのだろうか...
validator は Validator を implement して inject してやればよい。
validator, controller は Errors の参照が渡される場所ではこれに
reject* する事でエラーを登録する。
0 件のコメント:
コメントを投稿