p: опрос остановлен, но все еще запускает сетевой вызов - PullRequest
1 голос
/ 28 марта 2019

Я должен остановиться и запустить p:poll в JSF, используя некоторые условия ... Я могу сделать это, поместив опрос в сетку панелей и сделав рендеринг PanelGrid ... Я думал, что он работает, так как pollOperationStatusне вызывается после того, как я сделал PanelGrid отображенным как ложное ... Когда я показываю его, он также перезапускается .. Но все еще происходит сетевой вызов;что путает много вещей; как с этим бороться?

 <h:form>
    My main form
    </h:form>

        <h:form id="mypollform">

            <p:outputLabel id="currentTime" value="#{myBean.counter}" />
            <h:outputText value="#{myBean.startPoll}" id="counter11" />

            <p:panelGrid rendered="#{myBean.startPoll}">
                <p:poll interval="8" widgetVar="poller" autoStart="true"
                    listener="#{myBean.pollOperationStatus}"
                    update=":#{p:component('newServerID')},:#{p:component('mypollform')}" />
            </p:panelGrid>
        </h:form>

1 Ответ

2 голосов
/ 28 марта 2019

Primefaces 7 Документация гласит :

Опрос может быть запущен и остановлен с помощью API на стороне клиента; Или связать логическая переменная для атрибута stop и установите его в false в любой произвольное время.

В вашем случае это будет в javaScript:

PF('poller').stop(); или PF('poller').start();

Или привяжите свойство bean boolean к атрибуту stop p:poll:

<p:poll stop="#{myBean.stopPoller}" interval="8" widgetVar="poller" autoStart="true"
                    listener="#{myBean.pollOperationStatus}"
                    update=":#{p:component('newServerID')} :#{p:component('mypollform')}" />

Также следует помнить, что идентификаторы компонентов в атрибуте update разделяются пробелом, а не запятыми.

...