0

@SessionScopedデータベースに新しいレコードを追加し、オブザーバーに通知するためにCDIイベントを発生させるCDIBeanを使用しています。

JSFではa4j:push、イベントが発生したときにコンポーネントをレンダリングするために使用していますが、期待どおりに機能します。

イベントを発生させる同じセッションBeanには、メッセージを出力するオブザーバーメソッドもあります。これは、イベントを発生させたセッション(ブラウザー)でのみ機能します。

他のすべてのブラウザーはJSFでイベントを受信します(コンテンツがレンダリングされ、新しいレコードが表示されます)が、バッキングBeanのメソッドは呼び出されません。

この問題に関する他の投稿から、CDI Observer patternグローバルイベントをサポートするための拡張が機能することがわかっています(http://blog.akquinet.de/2012/02/28/extending-cdi-observer-pattern-to-support-global-events/) 。

しかし、なぜそれがJSF側で期待どおりに機能し、変更なしでバッキングBeanメソッド側では機能しないのでしょうか。

4

1 に答える 1

0

これは、同じセッションにバインドされているため、他のセッションが異なるセッションのイベントを受信して​​はならないためです。

于 2013-03-15T21:37:05.660 に答える