2011-06-30 18 views
0

これは設計レベルの質問です。私はよりよいアプローチとなるべきものについて意見が必要です。SpringとStrutsの2つの統合

私が働いているアプリケーションは、Struts 2と春(依存性注入用)を使用しています。 各Actionクラスは、ビジネス機能を実行するためにService Layerを呼び出します。すべてのデータはModelクラスに保存されます。すべてのアクションはモーダルを使用してデータを保存/編集します。これらのModalクラスは、ゲッター/セッターを持つクラスのプライベートメンバーとして定義されています。

質問1)モーダルクラスをアプリケーションコンテキストでBeanとして定義する必要がありますか?現在私はしていません。フォームの送信時に、Struts自身がインスタンスを作成します。編集時(私は画面上にデータを表示する)私は明示的にモーダルを作成する必要があります(新しいを使用して)。より良いアプローチは何でしょうか。

質問2)aplCntxでのアクションクラスのBeanがスコープ=「プロトタイプ」として定義されるべきか? Struts自身は、アクションクラスの新しいインスタンスを作成する気にしませんか?

+0

モーダル=モデル...? – leonbloy

+0

余分なモデルクラスは本当に不要です。アクションはMVCのモデルロールに適合するためです。 – Chao

答えて

1

1)私たちはアプリケーションコンテキストでモーダルクラスをBeanとして定義する必要がありますか?現在私はしていません。フォームの送信時に、Struts自身がインスタンスを作成します。編集時(私は画面上にデータを表示する)私は明示的にモーダルを作成する必要があります(新しいを使用して)。より良いアプローチは何でしょうか。

あなたは春・コンテキストでモーダルを定義するべきではありませんいいえ、彼らは

+0

あなたは、アプリケーション・コンテキストでモーダルを定義するのではなく、必要なときにいつでも新しいインスタンスを作成するべきです。これは正しいです? –

+0

まったく<!-----------> –

3

質問1単純なPOJOをする必要があります:Jigarはあなたが豆のようにあなたの行動のフィールドを定義する必要はありません言ったように
ほとんどの場合、ページとアプリケーションの間でデータを運ぶだけなので、サービスレイヤーからページを作成し、プレゼンテーションのためにページに渡すか、ページからデータを送信するだけですこの場合、struts2がインスタンス化を処理します。

質問2:
struts2には、デフォルトでアクション作成を行うオブジェクトファクトリがあります。これを変更して、アクション作成を処理するためにスプリングを指定することができます。まず、あなたのクラスパスにspring plugin for struts2を追加する必要があり、あなたにStruts2の設定ファイルの行を追加します。

<bean id="myActionBean" class="com.my.myAction" scope="prototype"> 
    ... required properties ... 
</bean> 

あなたにスコープを設定する必要が忘れないでください:

<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/> 

を次に、あなたのようなあなたの行動のための豆を作成しますプロトタイプはstruts2でどのように動作するかを示します。次に、あなたのストラット設定ファイル:

<action name="myaAction" class="myActionBean"> 
    ... required result mapping ... 
</action> 
関連する問題