0

我的 JSF/PrimeFaces Web 应用程序中最受欢迎的页面是一个带有 p:dataTable 的页面,其数据跨越日期范围(是的,FROM 和 TO p:calendar 与 p:inputText 和 p:autoComplete 组件一起用于过滤数据,何时/必要时)。

我想轮询所选日期(日期范围)的 dataTable 中列出的数据的变化。如果任何/每个用户的当前视图的数据已更改,我想呈现更新或刷新命令按钮/链接。

当给定用户对数据进行更新时,我想通知任何/所有其他会话中的其他用户此数据已更改,以及用户是否正在通过 dataTable(或详细视图),然后用户可以单击刷新按钮查看更新,但刷新按钮/链接仅通过 AJAX 轮询呈现。当然,我希望启动此“操作”或将某些标志(或 POJO 可能更合适)存储在服务器上(“列出 dataThatWasUpdated”),并且轮询将检查此“每个”用户(如轮询通知我已经拥有的实现,它运行良好)。在轮询期间,将扫描此列表,如果用户正在查看列表中的任何数据,则布尔值将设置在另一个 managedBean 上以呈现命令按钮/链接。

在不久或遥远的将来,在我迁移到 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 回答