2009-07-20 18 views
1

複数のStrutsアクションに対して同じJSPをレンダリングしたいとします。 JSPをレンダリングするとき、Beanの名前は、どのアクションが呼び出されたかによって異なります。 Beanは必ずしもMyBeanと呼ばれていないため、異なるStrutsアクションクラス間でJSPを効果的に共有

<c:out value="${myBean.myProperty}" />

:だから、私のような何かを呼び出すことはできません。

現在、私は、JSPで必要とする一般的なオブジェクトをHttpSessionに配置することで、この問題を回避しています。たとえば、

次に、JSPでは、単純な参照「sampleString」があり、レンダリングのアクションによっては変更されません。

もちろん、私が使用しているオブジェクトは文字列よりはるかに大きく、必要がなければセッションにオブジェクトを配置したくありません。異なるJSP間で共有するために、セッションではなくページコンテキストまたはオブジェクトにオブジェクトを配置する方法はありますか?

私はRailsの世界から来ているので、私はStrutsにとって非常に新しく、少し失われた自分を見つけることになります。 Strutsで書かれた既存のアプリケーションを拡張する必要があります。プログラムは実際にはBeanActionを使ってActionFormとActionを組み合わせているので、上記の例は私のコードのようなものではありません。

私の混乱を解消する助けをありがとう!

答えて

1

私の最初の考えは、krosenvoldが彼の答えで言ったように、それをカスタムタグとして実装することでした。しかし、あなたはStrutsを初めて使っていると言いました.JSPとJ2EE Web開発の初心者だと思います。カスタムタグは非常に簡単なテーマではありません。

「プロキシ」ページを使用して、jsp:を使用して呼び出し先のJSPを組み込むことができます。 jsp:includeタグには、共通の変数名を別の参照にマップできるjsp:paramタグを持つ本体があります。

See here for an example in jsp:param in jsp:include

これを実行すると、実際のコードが1ページあり、複雑なオブジェクトへの参照を処理するためのN個のプロキシがあります。 カスタムタグを使用することもできますが、これはこれを行う別の方法です。個人的には非SCWCDの実装が簡単だと思います。

1

3つの異なるアクションクラスが実装するインターフェイスを使用したいと思うので、同じjspにインターフェイスタイプを使用させることができます。これにより、3つのアクションクラスが "同じ" jspに変わるので、基本的にはそれが行く道だと言います。もしあなたがそれを使用できない/使用しないのであれば、おそらくカスタムjspタグを使用して共通ビットをカプセル化し、各ページに対して別々のjspを持って同じ共通タグを呼び出すでしょう。

関連する問題