2012-01-25 2 views
0

私の問題は、このアクションにアクションとリストがあり、データベースからいくつかのアイテムを検索するということです。
状況:
ユーザーは検索を行い、このリストにあるアイテムを配置してグリッドに表示します。
ここまではOKです。
問題は、ユーザーがグリッドに表示されたデータをpdfに印刷するように求めるときです。
アクションに戻ると、私の属性 "listItems"はnullです。
私は自分の行動にコンストラクタを作成しましたし、私はすべての回のユーザーは、私が意味する、私はアクションの新しいインスタンスを作成し、要求を行うことを見た:ユーザーがページに入るとき誰かがストラット2にアクションの単一インスタンスを作成する方法を知っていますか?

  1. Iが示しますデータ ベースで見つかったすべてのレジスタ...アクションが作成されます...
  2. ユーザーがフィルタを記入し、ユーザーがデータを印刷するように要求したとき
  3. 再び...アクションが作成され、新しい検索をお願い示しました。グリッドには、もう一度アクションが作成されます。
コードの一部の下に

:私は、ユーザーに戻って結果を送信した後

public class MyAction extends AbstractMyAction<MyObject, MyFilter, MyService>{ 
    private List<MyObject> list; 
    //getter and setter... 
    //method that fill my list... 
} 

私は、この属性「リストは、」彼の値を保持することを必要とするときにコンテンツを印刷するかどうかを確認するなどの他のアクションのためのユーザの要求、例えば、このリスト。

「会話スコープ」などを作る方法はありますか?
ユーザーが印刷を依頼すると、私のリストは生き続ける必要があります。

+0

これは意味をなさない。コードを編集して表示してください。 – aweigold

+0

ここにいるのは...助けてくれてありがとう – Igor

答えて

0

あなたはこの質問にSpringとタグを付けました。これは、SpringがStruts2アクションを作成していることを意味する場合、対応するBeanでSpring scope="session"を使用できます。私はデフォルトがrequestだと考えています。

あまりにも複雑で紛らわしい行為につながる可能性があるため、注意深くこの設定を有効にして乱用しないことをおすすめします。

Spring plugin in the officialサイトまたはother tutorialsについて詳しく読むことができます。

+0

確かに、このプロジェクトは春を使うので、このようなものが欲しかったです...しかし、どこでそのスコープを設定できますか?設定ファイルはありますか? – Igor

+0

リンクで回答を編集したのでコメントには埋め込まれません。 – madth3

0

Strts2アクションデータ転送オブジェクトとして作業し、各Struts2のアクションの新しいインスタンスの作成にアクションクラスの鉛への要求とは、私はないは、あなたがどのように変更することを計画しているとして、これを変更することを考えることをお勧めします理由ですアプリケーションの全体的な信頼性の低い動作につながる可能性があります。

この問題の単純な解決策はSessionを使用することです。あなたがspringを使用している場合はsession scopeを使用できます。

別の解決策は、アクションのさまざまな呼び出しの間にリストを永続化し、利用可能にすることです。

+0

「アクションの異なるコール間のリストを維持して利用可能にする」とはどういう意味ですか?リストをハッシュマップに入れて、他のアクションのために戻ったときにそれを捕まえるのが好きですか? – Igor

+0

はい、そのようにするか、またはプリプロセッサインターセプタでビルドを使用する –

1

しないでください。それは可能かもしれませんが、フレームワークに反して実行されます。通常の「プロトタイプ」スコープで行われます。フレームワークの規範の外に移動すれば、あなた自身はあなたのものです。

標準的なアプローチは、this FAQ entryに概説されている。一般的には、Preparableインタフェースを実装する方が望ましいメカニズムです。属性(リスト)自体はセッション中に保持されていてもかまいません(不要になったときに削除されます)。または、バッキングキャッシュメカニズムを使用して、DBからリストを満たすサービスによって発生したペナルティを減らします。

0

上記のいくつかを含めて、これを解決するにはいくつかの方法があります。私自身のニーズのために、そしてコードを書くのが大好きなコード・ジャンキーですが、何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も繰り返すボイラー・プレートを作りました。

あなたのアプリケーションの範囲、技術を習得して製品などを提供する時間に応じて、私は自分のニーズに合ったプラグインを見つけました。私はStruts2でウィザードを素早く開発するために非常に使いやすいようにしました(私は自分自身と私の同僚の経験から気づきましたが、時にはお尻の痛みでした)。

Conversation Pluginは、SpringまたはCDIプラグイン自体に代わるものではありません。これは依存性注入や制御フレームワークの逆転ではありません。これは、アクションクラスに存在し、ビューでアクセスされるモデルの範囲に特化しています。また、パッケージベースの会話ネスティング、命名規則による設定、実行時にアクションの会話の詳細を表示するためのStruts2 Config Browserの拡張など、いくつかのユニークな機能も備えています。

使用方法の学習にはほとんど時間がかからず、構成に時間がほとんどかかりません。そして、十分な助けが得られていない文書があれば、私に知らせてください。私はすぐに文書を精緻化し、サイトでそれを強調します。

また、誰かがプラグインが悪いアプローチだと思っても、私はあなたの洞察力を分かち合うよう懇願します!

関連する問題