JSF:轮询服务器,渲染按钮/链接,用户可以刷新视图

JSF:轮询服务器,渲染按钮/链接,用户可以刷新视图,jsf,jsf-2,primefaces,long-polling,Jsf,Jsf 2,Primefaces,Long Polling,在我的JSF/PrimeFaces web应用程序中,最流行的页面是带有p:dataTable的页面,数据跨越日期范围(是的,从和到p:calendar用于过滤数据以及p:inputText和p:autoComplete组件,如果需要) 我想对所选日期(日期范围)的dataTable中列出的数据的更改进行轮询。仅当任何/每个用户的当前视图的数据已更改时,我才希望呈现更新或刷新命令按钮/链接 当给定用户对数据进行更新时,我想通知任何/所有其他会话中的其他用户此数据已更改,如果用户正在/正在通过da

在我的JSF/PrimeFaces web应用程序中,最流行的页面是带有p:dataTable的页面,数据跨越日期范围(是的,从和到p:calendar用于过滤数据以及p:inputText和p:autoComplete组件,如果需要)

我想对所选日期(日期范围)的dataTable中列出的数据的更改进行轮询。仅当任何/每个用户的当前视图的数据已更改时,我才希望呈现更新或刷新命令按钮/链接

当给定用户对数据进行更新时,我想通知任何/所有其他会话中的其他用户此数据已更改,如果用户正在/正在通过dataTable(或详细视图)查看页面/视图上的数据,则用户可以单击Refresh按钮查看更新,但Refresh按钮/链接仅通过轮询通过AJAX呈现。当然,我希望启动这个“操作”,或者在服务器上存储一些标志(或者POJO可能更合适)(“List DatathatWasUpdate”),轮询将检查这个“per”用户(就像我已经准备好的轮询通知实现,它工作得很好)。在轮询期间,将扫描此列表,如果用户正在查看列表中的任何数据,则将在另一个managedBean上设置Boolean以呈现commandButton/链接。每次轮询后,此列表将设置为null

在不久或遥远的将来,在我迁移到CDI之后,我将通过CDI和通过HTML(当然还有Java EE CDI)的服务器发送事件(SSE)来实现这一点,但目前我正在考虑使用或添加p:poll,以给用户刷新视图的机会/选项(因为数据已由另一个用户更新)


请确认我的想法/设计和/或建议。谢谢。

很好,但是WebSocket/Comet框架可能更好(而且添加起来并不复杂)。当您使用Primefaces时,您可以使用(
http://atmosphere.java.net
)。他们有一个
p:push
来实现这样的目标。

感谢您的回复。我非常了解大气/彗星框架和PrimeFaces Push(由大气提供动力)。我已经尝试添加PrimeFaces推送,但目前它在我的JSF/PrimeFaces web应用程序中无法正常工作,因为Glassfish 3.1.2.2是我的容器。我试图迁移到Tomcat 7.0.29和7.0.32,但在这方面遇到了问题。