如何监视异步/后台线程状态并在JSF组件中获取通知

Mah*_*esh 2 jsf notifications asynchronous refresh monitor

我在Web应用程序中创建了几个线程,并且我在JSF页面中有一个数据表组件.

我想自动更新表以显示线程的当前状态.我可以在这种情况下使用任何预构建组件吗?

Bal*_*usC 5

我在Web应用程序中创建了几个线程

我衷心希望你以正确的方式做到这一点,因此它不会陷入史诗般的灾难.


我想自动更新表以显示线程的当前状态.我可以在这种情况下使用任何预构建组件吗?

你基本上在寻找一种叫做"轮询"或"推动"的技术.轮询的基本概念是使用JavaScript setInterval()setTimeout()每隔一段时间向服务器发出(ajax)HTTP请求,并让它相应地处理结果.推送的基本概念是打开持久的HTTP连接并让服务器通过它发送小消息,这可以通过Java EE 7 WebSocket中的JavaScriptJSR356 API来完成.

标准的JSF实现不提供任何即用型轮询或推送组件.对于即将推出的JSF 2.3,<f:websocket>目前正在进行新标记(另请参阅问题1396).

你最好的选择是隐藏的形式,隐藏的命令链接/按钮,<f:ajax>然后调用它setInterval().然而,PrimeFaces等组件库提供了即用型组件,参见<p:poll>展示<p:push>展示一些具体示例.JSF工具库OmniFaces在其<o:commandScript>橱窗轮询例子,在<o:socket>展示几个例子推(新标准JSF <f:websocket>将在很大程度上基于<o:socket>).

也可以看看: