InterceptorからActionFormを取得する方法
S2ActionMappingにもっているので下記方法で取得できる。
XxxForm xxxForm = S2ActionMappingUtil.getActionMapping().getActionForm();
S2ActionMappingは、色々便利なメソッドがあるので、フレームワーク系の処理を書くときに便利。
S2UtilのBeanCopy
S2Util版BeanUtilの紹介 - wyukawa's diary
S2UtilのBeanCopyは、こんな感じで、executeが不要らしい。
BeanUtil.copyBeanToBean(src, dest);
これはうれしい。execute忘れてもコンパイルエラーが出ないので、結構はまる人が多かった。
リリースはもうすぐかな?次のプロジェクトで使いたい。
SQLの組み立ては、ActionクラスかServiceクラスか
SimpleWhere等を使用して、SQLを組み立てる場合にActionで組み立てるのがいいかServiceで組み立てるのがいいのか悩んでいる。
Seasar Conference 2008-SAStrutsの開発Tipsでは、Actionクラスでの組み立てができることになっているが、
最新のS2AbstractServiceは、select()メソッドがprotectedになっているのでActionクラスからは見えない。
Seasar2.4.30でpublicからprotectedになったみたい。
AbstractServiceでオーバーライドすれば、publicにもできるけど、開発者によってずれるので辞めたほうが無難か。
Validationエラー後に、画面表示処理を行う方法
@Executeのinputには、JSPだけではなく、Actionクラスのメソッドも指定できる。Validationエラー後に、セレクトボックスの値取得等の画面表示処理をしたい場合は、この方法でできる。