私は関数FacesContext.addMessage()について知っています。ただし、別のウィンドウにいるなど、現在別の顔のコンテキストにいる場合はどうなりますか。
現在のセッションに保存されている他のFacesContextオブジェクトへの参照を取得する方法はありますか?
基本的に、ポップアップウィンドウから親にメッセージを送信したいのですが、親のFacesContextオブジェクトへの参照がありません。
私は関数FacesContext.addMessage()について知っています。ただし、別のウィンドウにいるなど、現在別の顔のコンテキストにいる場合はどうなりますか。
現在のセッションに保存されている他のFacesContextオブジェクトへの参照を取得する方法はありますか?
基本的に、ポップアップウィンドウから親にメッセージを送信したいのですが、親のFacesContextオブジェクトへの参照がありません。
正確にはそのようには機能しません。FacesContextは、通常はアクティブにそこに座って、すでにレンダリングされているウィンドウ内で待機しているものではありません。
特定の「ウィンドウ」のFacesContextは、HTMLを含む応答を最終的に送信する要求を処理するスレッドでのみ使用できます。このHTML応答を受信すると、ブラウザはそれを表示しているだけです。その時点では、そのHTMLにまだ関連付けられているサーバー側のFacesContextの概念はありません。
リバースAJAX(comet)を使用すると、サーバーから特定のクライアントにコンテンツをプッシュすることができます。このようなサーバー側のプッシュに関連付けられているバッキングBeanを一時停止して、サーバー側のイベントを待機させることができます。ここではCDIバスが最も便利ですが、基本的にはHTTPセッションを介して共有されるオブジェクトに対する昔ながらの通知も機能します。
ポップアップまたはその他のウィンドウに関連付けられているバッキングBeanが、このイベントをトリガーする可能性があります。