【发布时间】:2011-01-09 12:14:34
【问题描述】:
如何在 Facelet 上显示服务器的进度?
我需要编写 Servlet 吗?或者可以通过ApplicationScoped Beans 实现吗?
我想以 Ajax 方式更新指示器(进度条)。
【问题讨论】:
标签: ajax jsf jsf-2 progress-bar
如何在 Facelet 上显示服务器的进度?
我需要编写 Servlet 吗?或者可以通过ApplicationScoped Beans 实现吗?
我想以 Ajax 方式更新指示器(进度条)。
【问题讨论】:
标签: ajax jsf jsf-2 progress-bar
这取决于您希望展示哪些内容的进度。基本上,您在 Facelet 上放置一个进度条组件(例如 http://www.primefaces.org/showcase/ui/progressBar.jsf)并将其值绑定到能够提供进度信息的 bean。
如何获得上述进展完全是另一个问题,不属于JSF的直接范围。例如,如果后台进度是 Quartz 作业,您的 bean 可能会记住它的作业 ID,并在每次进度条发送轮询请求时使用 Quartz 调度程序查找它。然后在 Quartz 作业中运行的代码需要计算它在整个过程中的距离。
使用 Servlet 3.0 和 CDI 的事件总线,还可以利用反向 AJAX/comet 并让进度条等待更新事件,而不是让进度条进行轮询。在这种情况下,您的后台工作将不得不定期发布更新事件。这会更有效,但仍然相对较新,并不总是开箱即用。
【讨论】: