我正在使用JSF 2.x和richfaces。我有以下要求实施。
此图像描述步骤1已成功完成,步骤2正在进行中,步骤3尚未启动。
我有以下支持bean代码
public void doAllSteps() {
// set step1 flag started
// do step1
// set step1 flag success
// set step2 flag under_progress
// do step2
// set step2 flag success
// set step3 flag under_progress
// do step3
// set step 3 flag success
}
// There will be getters for all the flags
现在,我在.xhtml
页面中执行了
<a4j:poll id="poll" interval="1000" enabled="true" render="gr-img-status-panel" />
<a4j:outputPanel id="gr-img-status-panel">
<div class="row mr-top1">
<div class="col-xs-12">
<h4 class="text-white text-left">
Step 1
<h:panelGroup rendered="#{myBean.step1Status eq 0}">
(Processing ...)
</h:panelGroup>
<h:panelGroup rendered="#{myBean.step1Status eq 1}">
<span style="color: green;">✔</span>
</h:panelGroup>
<h:panelGroup rendered="#{myBean.step1Status eq 2}">
<span style="color: red;">✗</span>
</h:panelGroup>
</h4>
<h4 class="text-white text-left">
Step 2
<h:panelGroup rendered="#{myBean.step2Status eq 0}">
(Processing ...)
</h:panelGroup>
<h:panelGroup rendered="#{myBean.step2Status eq 1}">
<span style="color: green;">✔</span>
</h:panelGroup>
<h:panelGroup rendered="#{myBean.step2Status eq 2}">
<span style="color: red;">✗</span>
</h:panelGroup>
</h4>
<h4 class="text-white text-left">
Step 3
<h:panelGroup rendered="#{myBean.step3Status eq 0}">
(Processing ...)
</h:panelGroup>
<h:panelGroup rendered="#{myBean.step3Status eq 1}">
<span style="color: green;">✔</span>
</h:panelGroup>
<h:panelGroup rendered="#{myBean.step3Status eq 2}">
<span style="color: red;">✗</span>
</h:panelGroup>
</h4>
</div>
</div>
</a4j:outputPanel>
我还有a4j:commandButton
执行doAllSteps()
。
问题
当我第一次加载页面a4j轮询开始时(对我来说没问题)。但是一旦我点击a4j:commandButton
,轮询就会停止。在a4j:commandButton
完全执行a4j轮询后再次启动。所以这意味着我不能同时执行2个a4j请求。
我如何实现目标?