どうすれば CDI で新しい会話を開始できるのだろうと思いました。cid 要求パラメーターがない場合、コンテナーは新しい会話を開始するように見えますが、コントローラーから明示的に新しい会話を開始したい場合があります。
例: JSF ページを使用して、会話スコープのコントローラー Bean によるエンティティ保持を編集します。ajax リクエストが送信され、コントローラーのメソッドが呼び出されてイベントが発生し、新しい会話内の別のコントローラーで編集する必要があるサブエンティティが渡されます。その問題の解決策が見つかりません。私はすでに Apache Myfaces CODI を調べましたが、その問題を解決するパターンも見つかりません。
それから私を助けてください。
[編集] Ok。たぶん、私は問題を十分に詳しく説明していませんでした。もう一度試してください: 異なる (新しい) 会話 ID を持つ「同じ」会話スコープのコントローラー Bean の新しいインスタンスにアクセスしたい場合。それはどのように機能しますか?あなたが持っている画像..言ってみましょう.. 1つの Order エンティティを編集するための OrderControllerBean 。このコントローラーには、public void createSubOrder() のような JSF アクション メソッドがあります。このメソッドは、新しい Order を作成し、それを使っていくつかの凝った処理を行う必要があります。その後、別の会話 ID を持つ新しい OrderControllerBean インスタンスに渡す必要があります。おそらくCDIイベントを使用して。関係ない。問題は、OrderControllerBean が会話に既に存在することです。現在の注文を編集するために使用されます。そのため、作成したばかりのサブオーダーの作成および編集には使用できません。では、OrderControllerBean の新しいインスタンスを作成するにはどうすればよいでしょうか? たぶん、これはこれを行う正しい方法ではありません。しかし、これまでのところ、空白のcidパラメーターを使用してブラウザーを新しいURLに送信せずに、新しい会話を作成する別の可能性を見つけることができません. しかし、これらの会話の間で情報を交換することはできません。会話 1 で作成された非永続的な注文を、会話 2 の同じコントローラーに移動するにはどうすればよいですか? 私の問題は、会話の会話についてです。会話 1 で作成された非永続的な注文を、会話 2 の同じコントローラーに移動するにはどうすればよいですか? 私の問題は、会話の会話についてです。会話 1 で作成された非永続的な注文を、会話 2 の同じコントローラーに移動するにはどうすればよいですか? 私の問題は、会話の会話についてです。
[編集] ドキュメント全体と、これまでに付属しているすべての例を読みました。これらのステートメント (http://docs.jboss.org/cdi/spec/1.0/html/contexts.html#conversationcontext) によると、CDI 会話は JSF と密接に結びついているようです。残念ながら、技術的な詳細を詳しく説明しているドキュメントは見つかりません。新しいリクエストを送信して新しい会話を取得する方法は他にないため、新しい会話がいつどのように開始されるかについてのロジックをビュー レイヤーで直接保持する必要があります。それは間違いなく私が想像できる最善の方法ではありません。私の次の試みは Seam 3 の評価です。なぜなら、Seam 2 には @Begin および @End アノテーションがあり、会話をより詳細に制御できるようになったことを覚えているからです。会話の伝播を指定できるタグ ライブラリもいくつかありました。他の誰も私のような質問をしていないのはなぜだろうと思っています。現時点では、CDI が複雑なプロジェクトにあまり普及していないか、または物事がどのように機能するかを理解するのに大きな問題があります。これまでのところ、単純なデモ以上の CDI/CODI の例を見つけることができません。使用されているポータブル拡張機能に関係なく、会話の高度な使用を示す例へのリンクを誰かが持っている場合は、お知らせください。