2

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

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

4

1 回答 1

5

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

我全心全意地希望您以正确的方式做到这一点,因此它不会以史诗般的灾难告终。


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

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

标准的 JSF 实现不提供任何现成的轮询或开箱即用的组件。对于即将到来的 JSF 2.3,一个新<f:websocket>标签目前正在进行中(另请参阅issue 1396)。

您最好的选择是带有隐藏命令链接/按钮的隐藏表单,<f:ajax>然后通过setInterval(). 然而,像PrimeFaces这样的组件库提供了开箱即用的组件,另请参阅<p:poll>展示<p:push>展示以获取一些具体示例。JSF 实用程序库OmniFaces在其<o:commandScript>展示中展示了一个投票示例并<o:socket>展示了几个推送示例(新标准 JSF<f:websocket>将主要基于<o:socket>.

也可以看看:

于 2012-12-14T14:07:56.790 回答