[Seasar-user:16565] Re: [S2Struts] unspecifiedメソッドについて
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2008年 12月 29日 (月) 01:11:57 JST
中村(taedium)です。
> StrutsのDispatchActionにおけるunspecifiedメソッドに相当する機能は
> S2Strutsでは実装されていないように思います。
> これは経緯や理由がなにかあるのでしょうか。
POJOなActionを使った場合についてですよね?
S2Strutsでは、ActionCommandやPojoActionCommandという
インタフェースの実装クラス(以下コマンドと呼びます) で
Actionのタイプを判別してActionを実行しています。
コマンドは、自分が実行すべきActionでなければ
何もせずに後続のコマンドに処理をまかせます。
S2Strutsとしては、unspecifiedメソッドに相当する機能は
利用者がコマンドを追加して自由に実現できるので、
意図的にunspecifiedメソッドに対応していないんだと思います。
お使いのバージョンはいくつでしょうか?
一応、1.2系でunspecifiedメソッド相当の機能を実現する例を
以下に示してみます。
たとえばこんなクラスを作ります。
public class MyPojoActionCommand implements PojoActionCommand {
public String execute(HttpServletRequest request,
HttpServletResponse response,
Class actionInterface, Object action,
Object form, ActionMapping mapping) {
Method m = ClassUtil.getMethod(
action.getClass(), "unspecified", null);
return (String) MethodUtil.invoke(m, action, null);
}
}
s2struts.diconでは次のように設定します。
(pojoActionExecuteCommandコンポーネントに新規のコンポーネントを
追加します)
<component name="myPojoActionCommand"
class="my.MyPojoActionCommand">
<component name="pojoActionExecuteCommand"
class="org.seasar.struts.processor.PojoActionExecuteCommand">
...
<initMethod name="addPojoActionCommand">
<arg>myPojoActionCommand</arg>
</initMethod>
</component>
--
Toshihiro Nakamura
Seasar-user メーリングリストの案内