2010-12-11 9 views
2

私はJSFを前に使っていますが、私はMODELのコンセプトが本当に重要であることを知っています。ここでは、struts2では、私はこのコンセプトが少し古くなっていることを理解しています。たとえば、Beanセッションのスコープを設定することは不可能です。代わりに私はBean(オブジェクト)全体をセッションに(手動で)入れる必要があります。Struts2 - これは "MVC"フレームワークのための素晴らしい戦略ですか?

したがって、いくつかの方法では、これはうまくありません。 たとえば、ページ・スイッチのために、私は(JSPページ上で)実装されている本:

<s:div cssClass="content" id="content"> 
<% 
    String pageValue=request.getParameter("page"); 
    if((pageValue!=null) && (pageValue.compareTo("articles")==0)) { 
     %> 
      <s:include value="articles/articles.jsp"></s:include> 
     <% 
    } else { 
     %> 
      <s:include value="homepage/homepage.jsp"></s:include> 
     <% 
    } 
%> 
</s:div> 

これはStruts2ので動作するように正しい方法ですか?あるいは、いくつかの値をBeanに入れて、Beansの値に従ってページを生成する方が良いでしょうか? (モデルのコンセプトですが、本当にBeanのスコープを設定するのは難しいですが、私はそれらをセッションに入れません。それ以外は手続き的なコーディングと同じです。

私は、そうでない場合はどのように行うのか分からない:)

乾杯

+0

MVCフレームワークなどではscritpletを使用しないでください。 struts2 –

答えて

1

、いくつかの方法が

1 ...あります)Strutsのは、DIのためのバネを使用して、あなたものためのバネを使用することができますこの目的はstruts2-spring-pluginを見てください

2)前の質問で述べたようにSessionAwareを使うことができます。しかし、セッションスコープのオブジェクトはその性質上クロスカッティングの問題であるため、インターセプタは連携して動作することに言及しました。インターセプタがなければ、解決策はあなたの行動に存在するか、ビュー層を悪化させるでしょう。何度も何度も繰り返されています。

3)MVCを強くお考えの方は、modelDrivenとscopedModelDrivenを見てください。後でモデルが存在しない場合はセッションスコープ(他のスコープも可能)にあるアクションのモデルを設定します。それがインスタンス化されます...これは複数ページのフォームに適しています。フォームはこのオブジェクトを削除できます。私は本当にモデルが好きではないそれはアクションへのアクセスを複雑にすることがあります。

+0

+1 to Quaternion –

+1

実際には、Struts2はDIにXWorkを使用していますが、SpringやGuiceを使用するためのプラグインがあります。 –

+0

しかし、なぜ春ですか?私は春を使いたくない。春は別のフレームワークですね。 Struts2の明確なアプリケーションでどうすればいいですか? – markzzz

関連する問題