需要更新primefaces中的动作

时间:2016-06-02 03:40:48

标签: jsf primefaces

在我的场景中,我正在使用 民意调查 ,因此我有两个带渲染选项的输出文本字段,用于显示&#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>

1 个答案:

答案 0 :(得分:1)

你的问题需要我们更多的解释。让我试着回答。点击此链接Primeface Pool

在代码中,您可以更新<p:panel id="ContainerId">中的小组update="ContainerId"。您可以将间隔时间增加interval="3"

此轮询将更新您的面板,您的面板将显示最新值,并输出具有渲染的组件。

注意:使用“JSF”标记您的问题,以便更多用户可以查看您的问题。