我在 Web 应用程序中创建了几个线程,并且在 JSF 页面中有一个数据表组件。
我想自动更新表格以显示线程的当前状态。在这种情况下我可以使用任何预构建组件吗?
最佳答案
I created few threads in a web application
我衷心希望您did it the right way因此它不会导致一场史诗般的灾难。
I would like to update the table automatically to show the current status of thread. Is there any prebuild component I can use in this scenario?
您基本上是在寻找一种称为“轮询”或“推送”的技术。轮询的基本概念是使用JavaScript的setInterval()
或setTimeout()
定期向服务器发出 (ajax) HTTP 请求,并让它相应地处理结果。推送的基本概念是打开一个持久的 HTTP 连接并让服务器通过它发送小消息,这可以通过其他方式完成 WebSocket
in JavaScript和 JSR356 API in Java EE 7 .
标准 JSF 实现不提供任何现成可用的轮询或推送组件。对于即将推出的 JSF 2.3,新的 <f:websocket>
标签当前正在进行中(另请参阅 issue 1396 )。
您最好的选择是带有隐藏命令链接/按钮的隐藏表单,其中包含 <f:ajax>
然后通过 setInterval()
调用它。组件库如PrimeFaces但是,提供开箱即用的组件,另请参阅 <p:poll>
showcase和 <p:push>
showcase一些具体的例子。 JSF 实用程序库 OmniFaces其 <o:commandScript>
showcase中有民意调查示例和 <o:socket>
showcase几个推送示例(新标准 JSF <f:websocket>
将主要基于 <o:socket>
)。
另请参阅:
关于jsf - 如何在 JSF 组件中监视异步/后台线程状态并获取通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880022/