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

问题描述 投票:0回答:1

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

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

jsf asynchronous notifications refresh monitor
1个回答
6
投票

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

我衷心希望您以正确的方式完成这件事,这样就不会导致一场史诗般的灾难。


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

您基本上是在寻找一种称为“轮询”或“推送”的技术。轮询的基本概念是使用 JavaScript 的

setInterval()
setTimeout()
每隔一段时间向服务器发出(ajax)HTTP 请求,并让它相应地处理结果。推送的基本概念是打开一个持久的 HTTP 连接并让服务器通过它发送小消息,这可以通过 JavaScript 中的
WebSocket
和 Java EE 7 中的
JSR356 API 来完成。 在撰写本文时,标准 JSF 实现不提供任何现成可用的轮询或推送组件。对于即将推出的 JSF 2.3,新的

<f:websocket>

标签目前正在开发中(另请参阅

issue 1396
)。 您最好的选择是带有隐藏命令链接/按钮和

<f:ajax>

的隐藏表单,然后通过

setInterval()
调用它。然而,像
PrimeFaces
这样的组件库提供了开箱即用的组件,另请参阅 <p:poll> Showcase
 了解一些具体示例。 JSF 实用程序库 
OmniFaces
在其 <o:commandScript> 展示
 中有一个投票示例,在 
<o:socket> 展示
 中有几个推送示例(即将推出的标准 JSF 
<f:websocket>
将主要基于
<o:socket>
)。
另请参阅:

    如何以 1 秒的时间间隔 ajax 更新组件?
  • 使用 JSF/Java EE 从数据库实时更新
  • 服务器如何将异步更改推送到 JSF 创建的 HTML 页面?
© www.soinside.com 2019 - 2024. All rights reserved.