динамический интервал опроса простых лиц - PullRequest
0 голосов
/ 16 февраля 2019

Я написал пример кода следующим образом:

@ViewScoped
@Named
public class SampleBean implements Serializable {

    private int interval = 1;


    public void execute() {
        switch (interval) {
            case 1:
                System.out.println("1 Executed ...");
                break;
            case 2:
                System.out.println("2 Executed ...");
                break;
            case 3:
                System.out.println("3 Executed ...");
                break;
        }
    }

    public int getInterval() {
        return interval;
    }

    public void setInterval(int interval) {
        this.interval = interval;
    }
}    

и этот xhtml:

<h:form>
        <p:selectOneButton value="#{sampleBean.interval}">
            <f:selectItem itemLabel="1" itemValue="1"/>
            <f:selectItem itemLabel="2" itemValue="2"/>
            <f:selectItem itemLabel="3" itemValue="3"/>
        </p:selectOneButton>

        <p:poll interval="#{sampleBean.interval}" listener="#{sampleBean.execute}" id="poll"/>

    </h:form>    

Я хочу динамически обновить интервал времени компонента опроса Primefaces, но не изменился с моим примером кода,сон всегда выполняется каждую секунду.
Что не так в моем коде?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы должны указать компоненту p:poll для повторного получения значений бина.Вы можете легко сделать это, вызвав новую фазу рендеринга (через PrimeFaces update или через f:ajax render) на компоненте.

Итак, чтобы это работало, вам просто нужно сделать что-то вроде этого,

<h:form>
    <p:selectOneButton value="#{sampleBean.interval}">
        <f:selectItem itemLabel="1" itemValue="1"/>
        <f:selectItem itemLabel="2" itemValue="2"/>
        <f:selectItem itemLabel="3" itemValue="3"/>
        <f:ajax render="@form"/>
    </p:selectOneButton>
    <p:poll interval="#{sampleBean.interval}" listener="#{sampleBean.execute}" id="poll"/>
</h:form>    

Обратите внимание на приведенный выше вызов f:ajax.

Вам нужно нацелить охватывающий (родительский) компонент, чтобы он обновился - вот почему мы нацеливаемся на форму, а не накомпонент опроса напрямую.

...