問題タブ [conversation-scope]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ajax - JSF 'Tab' Bean スコープ
2 つのページと両方のページに 1 つのバッキング Bean を持つ webapp を作成する必要があります。を試してみ@SessionScoped
ましたが、ブラウザで別のタブを開くと、前のタブと同じデータが表示されます。
を使用しようとしMyFaces Orchestra
ましたが、AJAX リクエストごとにバッキング Bean が作成されます。
問題を解決するには?
事前に感謝、イリヤ
jsf - jsfでBusyConversationExceptionを回避する方法
jsfプロジェクトのページをナビゲートしているときにBusyConversationExceptionが発生します。これは主に、ユーザーがajax呼び出し中に別のページに移動しようとした場合に発生します。これは、ユーザーがページの読み込みを待たずに別のリンクをクリックした直後にリンクをクリックした場合にも発生します。
たとえば、ユーザーが以下のようなコードを介して生成された複数のリンクをクリックすると、間違いなくこの例外が発生します。別の例は、ユーザーがテキストフィールドにクエリを入力し、アプリケーションがこのクエリを検索するためにajax呼び出しを行うとします。そのクエリ中に、ユーザーがボタンをクリックして別のページに移動すると、BusyConversationExceptionも発生します。
このタイプの例外は、ExceptionHandlerWrapperクラスを拡張するExceptionHandlerクラスでキャッチできますが、現在の状態を保存できません。この場合にできる最善の方法は、この例外が発生したときにメインページにリダイレクトすることです。
これを回避するための解決策はありますか?回答とコメントを事前に感謝します。
jsf - NonexistentConversationExceptionをキャッチする方法
私は次のようなリンクを持っています:
カテゴリIDをURLで渡そうとすると、次のエラーが表示されます。
ID 1を復元するためのWELD:00032会話が見つかりません
次のようにリンクを書くだけなら
その後、正常に動作します。最初のリンクで何が間違っていましたか?
java - Ajax を使用した会話スコープ CDI
CDI 会話スコープを使用しようとしていますが、疑問があります: - ajax リクエストを使用する場合、cdi ID を伝播する必要がありますか?
例えば:
そうしないと、メソッド「@postConstruct」が再度初期化され、新しい CID が作成されることに気付きました。
ManagedBean コード:
ありがとう。さよなら!
jsf - JSF2で活発な会話を確実にする方法は?
購入プロセスをモデル化するJSF2ベースのWebアプリケーションがあります。このアプリケーションでは、ユーザーがウィザードのようなマナーでさまざまな情報を入力および選択し、前後に移動して、ある時点でプロセスを終了できます。
つまり、特別なことは何もありません。アプリケーションとユーザーの間の典型的な会話です。そのために、通常の会話スコープとMyFaces会話スコープの両方を試しましたが、会話の開始と終了の方法は知っています。私はまだアクティブな会話を確保することができません。言い換えると、ユーザーがページのURLを入力し、ステップ1にリダイレクトする代わりに、途中でプロセスに入るのを防ぐにはどうすればよいですか?
jsf - 会話範囲 - 会話の伝播
JSF ページでは、ハンドル ファイルのアップロード イベントごとに、Bean の新しいインスタンスが作成されます。毎回新しいクライアントのようです。また、Web ブラウザーも別のクライアントのようです。
では、これらの FileUploadEvents が 1 つのブラウザのみから来て、1 つの Bean のみをインスタンス化する方法はありますか?
@ViewScoped JSF Bean の代わりに CDI を使用しようとしています。
index.xhtml:
豆:
spring - 春の会話範囲
spring と jsf 1.2 で動作する Java Web アプリがあります。
また、Conversation スコープのフレームワークとして Apache Orchestra を使用します。
しかし、オーケストラには常に問題があり、最後の問題は、オーケストラの ConversationManager がシリアル化をサポートしていないため、セッションをシリアル化して別のサーバー インスタンスにレプリケートできないことです。ただし、セッションの複製が必要です。そのため、オーケストラを取り除き、会話の範囲に代替手段を使用することにしました。実際、会話は主にリクエスト スコープを拡張するために使用されるため、ビュー スコープに切り替えると問題が解決する可能性があります。
- 会話を取得したりスコープをSpringカスタムスコープとして表示したりするために使用できるライブラリを誰かが知っているでしょうか?
- シームへの切り替えはオプションではありません。スプリングと組み合わせたコードが多すぎます。jsf 2 に切り替えることで問題を解決できますか?
- それとも、誰かがオーケストラの会話を含むセッションを連載したのでしょうか?
- 何か案は?
spring - Spring Controller で CDI ConversationScoped Bean を使用する
春のコントローラーでタイムリーフを使用する必要がある webapp を作成しようとしています。しかし、Spring コントローラーにいくつかの CDI ConversationScoped Bean を注入したいと考えています。今のところ、Spring アプリケーションで CDI を構成することができました。CDI Bean をコントローラーに挿入しようとすると、正常に動作するように見えますが、Conversation Bean を挿入しようとすると、エラーで失敗します。
jsf - JSF/PrimeFaces アプリの 2 つの Bean 間の @ConversationScoped
これが私のジレンマです。JSF/PrimeFaces Web アプリケーション。request.xhtml に関連付けられた RequestBean.java と呼ぶ @ManagedBean Bean があります。response.xhtml に関連付けられた ResponseBean.java という名前の Bean @ManagedBean があります。RequestBean には List wlist = getWidgetList(); のようなメソッドがあります。
wList の要素は、ResponseBean.java に関連付けられた response.xhtml に入力されます。
これにセッション属性を使用することは許可されていないため、@ConversationScoped が関与していると思われます。
このような問題の良いチュートリアルやリンクの例を知っている人はいますか?
jsf-2 - セッションを無効にすると会話が破棄される
HttpSessionListenerを実装するSessionManagerがあります。SessionManagerには、アクティブなすべてのセッションの静的ハッシュテーブルがあります。セッションの無効化を強制する関数を作成しようとしています。次のようになります。
それは私がやりたいこと、つまり対象のセッションを破壊することです。ただし、@ConversationScopedマネージド Bean に副作用があるようです。
私のConversationBeanには、何らかの値を保持するプロパティがあります。sessionRegistryからセッションを無効にした後、 ConversationBean に保存されている値が破棄されることに気付きました。
- 別のセッションを無効にしていました (現在のセッションではなく、sessionRegistryからのもの)。
- セッションを無効にする前後にConversationBeanから値を出力しましたが、まだそこにあります。アクティブなセッションのリストを表示する@ViewScopedページを離れると、破棄されます。( @PreDestroyを使用してキャッチ)
- また、@ViewScoped Bean の@PreDestroyアノテーション付きメソッドで、会話 ID を出力しようとしましたが、既に無効化されています。はい、ConversationBeanのハッシュ コードも異なります。これは、 session.invalidateを呼び出す前に持っていたものとは異なるインスタンスであることを意味します。
- - 編集 - - -
この例は、私が達成しようとしていることを示しています:
次の値を持つアプリケーション スコープのハッシュテーブルsessionRegistryがあるとします。
管理者としてログインします。今、私は別のセッションを持っていると信じています.HttpSession4としましょう。アプリケーションスコープのハッシュテーブルからいくつかのセッションを開始したいのですが、次のようにします:
HttpSession4にログインしているときにHttpSession1
を破棄しました。私の理解では、HttpSession1 の会話は、HttpSession4 に関連付ける必要がある現在の会話ではなく、破棄する必要があります。
私の質問は、これは本当に@ConversationScopedマネージド Bean の通常の動作ですか? 私が無効にしたセッションに関連付けられているようでした。