在我的场景中,我正在使用 民意调查 ,因此我有两个带渲染选项的输出文本字段,用于显示&#34; 等待刷新<等数据/强>&#34;和&#34; 刷新发生&#34; ,当民意调查行动开始时,我需要显示&#34;等待刷新&#34;然后我从后端收集一些数据,在获取需要更新的数据后可能需要几秒钟(几秒或几分钟或一小时)&#34;刷新发生&#34;最终民意调查行动每30秒结束一次。如何做到这一点?
**Viewer Java Class :**
public String pollAction()
{
pollCountRendered = false;
RequestContext.getCurrentInstance().update("ViewerFormId:headerId");
RequestContext.getCurrentInstance().update("ViewerFormId:ContainerId");
try
{
Thread.sleep(5000);
}
catch (InterruptedException ex)
{
System.out.println(ex);
}
pollCount++;
System.out.println("Poll Action");
pollCountRendered = true;
RequestContext.getCurrentInstance().update("ViewerFormId:headerId");
RequestContext.getCurrentInstance().update("ViewerFormId:ContainerId");
return null;
}
**XHTML :**
<p:panel id="ContainerId">
<h:panelGrid columns="1"id="headerId"
cellpadding="3"
cellspacing="3">
<h:panelGrid id="refreshId"
columns="3"
title="Refresh Status"
cellpadding="3"
cellspacing="3"
style="height: 3em;border-radius:20px;font-weight: bold;">
<h:outputText id="refreshInId"
value="Refresh In : "
style="font-size:1.6em !important;font-family:message-box;font-weight:bold;border:none;background:none;"/>
<h:outputText id="refreshCountId"
value="Waiting for refresh"
rendered="#{Viewer.pollCountRendered}"
style="text-align: center;
position: relative;top: 1px;
font-size: 1.6em;"/>
<h:outputText value="Refresh happened"
rendered="#{not Viewer.pollCountRendered}"
style="text-align: center;
position: relative;top: 1px;
font-size: 1.6em;"/>
</h:panelGrid>
</h:panelGrid>
<div>
<h:form>
<p:poll id="pollId" widgetVar="pollId"
interval="30"
autoStart="#{Viewer.pollStart}"
stop="#{Viewer.pollStop}"
listener="#{Viewer.pollAction}"
update="@([id$=pollId]),@([id$=headerId])" >
</p:poll>
</div>
</p:panel>
答案 0 :(得分:1)
你的问题需要我们更多的解释。让我试着回答。点击此链接Primeface Pool。
在代码中,您可以更新<p:panel id="ContainerId">
中的小组update="ContainerId"
。您可以将间隔时间增加interval="3"
。
此轮询将更新您的面板,您的面板将显示最新值,并输出具有渲染的组件。
注意:使用“JSF”标记您的问题,以便更多用户可以查看您的问题。