2

私は以前JSFを使用していましたが、MODELの概念が非常に重要であることがわかりました。ここで、struts2では、この概念は少し時代遅れになっていることがわかります。たとえば、Beanセッションのスコープを設定することは不可能のようです。代わりに、Bean(オブジェクト)全体を(手動で)セッションに入れる必要があります。

したがって、一部の方法では、これは適切ではありません。たとえば、ページ切り替えの場合、私は(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に入れて、Beanの値に従ってページを生成する方がよいでしょうか。(モデルの概念ですが、Beanスコープを設定するのが本当にわからないので、セッションに入れません。それ以外の場合は、手続き型コーディングを行うようなもので、PHPを使用してこれを行うことができます:))。

それ以外の方法はわかりません:)

乾杯

4

1 に答える 1

1

いくつかの方法があります...

1)StrutsはDIにスプリングを使用します。この目的でSpringを使用することもできます。struts2-spring-pluginを調べてください。

2)前の質問で述べたように、SessionAwareを使用できます。ただし、セッションスコープのオブジェクトはその性質上横断的関心事であるため、インターセプターは連携して機能することを述べました。インターセプターがないと、ソリューションがアクションに存在するか、ビューレイヤーが悪化します...何度も繰り返されます...これは「良くない」と言えます。

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

于 2010-12-12T09:03:18.243 に答える