[cubby-user:226] Re: Actionクラスの差し替え方法があればご教授いただけないでしょうか?

はっしぃ [E-MAIL ADDRESS DELETED]
2013年 3月 5日 (火) 16:29:07 JST


馬場様

早々のご返信ありがとうございます。

アクションクラスの作成は、インタフェースを使用しない方式で作成しており
以下のような記述を試しておりました。

■標準版
    <initMethod name="addInterfaceToImplementationClassName">
      <arg>"xxx.smart.web.aaa.HogeAction"</arg>
      <arg>"xxx.smart.web.aaa.HogeAction"</arg>
    </initMethod>

■カスタマイズ版
    <initMethod name="addInterfaceToImplementationClassName">
      <arg>"xxx.smart.web.aaa.HogeAction"</arg>
      <arg>"xxx.Z001.web.aaa.Z001HogeAction"</arg>
    </initMethod>

■Java側
@Path("hoge")
public class HogeAction extends BaseWebAction {
    public ActionResult index() {
        // 標準版の処理
        return new JspForward("/hoge/index.jsp");
    }
}

@Path("hoge")
public class Z001HogeAction extends BaseWebAction {
    public ActionResult index() {
        // カスタマイズ版の処理
        return new JspForward("/hoge/index_Z001.jsp");
    }
}

現状では、Mavenではなく env.txt での切り替えで対応しておりますので
アドバイスいただきました、NamingConventionImplを拡張しての対応を検討したいと
思います。

動作確認が取れましたら、後日お知らせします。
どうもありがとうございました。



2013年3月5日 15:32 Yasuyuki BABA <yasuyuki.baba @ gmail.com>:

> 馬場です。
>
> アクションクラスはどのように作成されているのでしょう?
> NamingConventionImpl#addInterfaceToImplementationClassName
> を使おうとしているところから想像すると、インターフェースにアノテーションを付与し、カスタマイズ箇所はその実装クラスに実装する、ということでしょうか?
> Cubbyではインターフェースのアノテーションは読み取らなかったと思うので、それではうまく登録できないかとおもいます。
> # すみません、ちょっとうろ覚えです。
> NamingConventionImpl を拡張して isIgnoreClassName の中で
> xxx.smart.web.aaa.HogeAction(標準画面用)を smart deploy
> の対象外にする、というやり方だとうまく動くのではないでしょうか?
>
> 個人的には、同じクラス名にして Maven の Profile 機能でビルド時に切り替えるのが簡単かなーと思います。
>
>
> 2013年3月5日 14:30 はっしぃ <hasuie @ gmail.com>:
> > お世話になります。はっしぃと申します。
> >
> > Cubbyを利用したクラウドサービスを開発しており、顧客により画面カスタマイズが
> > 発生した際の対応方法を調査しております。
> >
> > 目的としては、ソース管理としては、1プロジェクトで管理しつつ
> > 画面のUIが大幅に変更になる場合には、個別カスタマイズで対応する方針です。
> >
> > そこで、環境によりActionクラスを差し替えたく、convention.diconの
> > NamingConventionImpl#addInterfaceToImplementationClassName にて
> > 設定を行いました。
> > 設定することで、複数コンポーネント登録の旨のエラーは発生しなくなりましたが
> >
> > 以下のようなエラーが発生して画面が表示できませんでした。
> >
> > java.lang.NullPointerException
> > at
> >
> org.seasar.cubby.internal.controller.impl.ActionProcessorImpl.process(ActionProcessorImpl.java:83)
> > at
> >
> org.seasar.cubby.filter.CubbyFilter$RequestProcessingInvocationImpl.proceed(CubbyFilter.java:483)
> > at
> >
> org.seasar.cubby.filter.CubbyFilter$RequestProcessingInvocationImpl.proceed(CubbyFilter.java:424)
> > at
> >
> org.seasar.cubby.plugin.AbstractPlugin.invokeRequestProcessing(AbstractPlugin.java:106)
> >
> > エラー箇所は、routing変数のアクセスでNullPointerExceptionとなっております。
> >
> > 現在のバージョンで上記要件を満たすことは可能でしょうか?
> > 出来ない場合は、Actionクラス内で IF文で対応するしかなさそうですが、できたらクラスごと
> > 差し替えたいと思い、ご質問させていただきました。
> >
> > ■Actionクラス構成
> > xxx.smart.web.aaa.HogeAction (標準画面用)
> > xxx.Z001.web.aaa.Z001HogeAction (個別カスタマイズ用)
> >
> > xxx.smart, xxx.Z001 は共に addRootPackageName で追加したスマートデプロイのパッケージです。
> >
> > ■使用バージョン
> > cubby-2.0.9.jar
> > s2-framework-2.4.40.jar
> >
> > 以上よろしくお願いいたします。
> >
> >
> > _______________________________________________
> > cubby-user mailing list
> > cubby-user @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/cubby-user
> >
>
>
>
> --
> BABA,Yasuyuki
> yasuyuki.baba @ gmail.com
> _______________________________________________
> cubby-user mailing list
> cubby-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/cubby-user
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/cubby-user/attachments/20130305/c2b36ba9/attachment.html>


cubby-user メーリングリストの案内