[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 メーリングリストの案内