0

私の JSF/PrimeFaces Web アプリで最も人気のあるページは、日付範囲にまたがるデータを含む p:dataTable を含むページです (そうです、FROM および TO p:calendar は、p:inputText および p:autoComplete コンポーネントと共にデータをフィルタリングするために使用されます。いつ/必要に応じて)。

選択した日付 (日付範囲) の dataTable にリストされているデータの変更をポーリングしたいと思います。すべてのユーザーの現在のビューのデータが変更された場合にのみ、更新または更新コマンドボタン/リンクをレンダリングしたいと思います。

特定のユーザーがデータを更新すると、他のすべてのセッションの他のユーザーに、このデータが変更されたこと、およびユーザーが dataTable を介してページ/ビューでそのデータを表示している場合 (または詳細ビュー)、ユーザーは [更新] ボタンをクリックして更新を表示できますが、[更新] ボタン/リンクはポーリングを介して AJAX 経由でのみレンダリングされます。もちろん、この「アクション」を開始するか、何らかのフラグ (または POJO がより適切かもしれません) をサーバーに保存し (「List dataThatWasUpdated」)、ポーリングでこの「ユーザーごと」をチェックします (ポーリング通知のように)すでに実装されており、完全に機能しています)。ポーリング中にこのリストがスキャンされ、ユーザーがリスト内のデータを表示している場合、別の managedBean にブール値が設定され、commandButton/Link がレンダリングされます。

近い将来、または遠い将来、CDI に移行した後、これを CDI 経由で行い、HTML (もちろん Java EE CDI も) 経由でサーバー送信イベント (SSE) を使用しますが、今のところ、p を使用または追加することを検討しています。 :poll を使用して、ビューを更新する機会/オプションをユーザーに提供します (データが別のユーザーによって更新されたため)。

私の考え/デザインを確認し、アドバイスしてください。ありがとう。

4

1 に答える 1

0

p:pollは問題ありませんが、WebSocket/Comet フレームワークの方が優れている可能性があります (追加するのはそれほど複雑ではありません)。また、Primefaces を使用しているため、Atmosphere ( http://atmosphere.java.net) を使用できます。彼らはそのp:pushような目標を達成する必要がありました。

于 2012-11-09T15:51:19.080 に答える