PrimeFaces poll does not work

谁都会走 提交于 2019-12-25 18:44:18

问题


I need to use <p:poll /> in some other work. So I was trying out the PrimeFaces ShowCase code:-

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:p="http://primefaces.prime.com.tr/ui"
    xmlns:a4j="http://richfaces.org/a4j">
    <h:form>
    <h:outputText id="txt_count" value="#{counterView.number}" />
    <p:poll interval="3" listener="#{counterView.increment()}" update="txt_count" />
    </h:form>
</html>

And the backing bean is as below:-

package com.poll;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean (name="counterView")
@ViewScoped
public class CounterView implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private int number;

    public int getNumber() {
        return number;
    }

    public void increment() {
        number++;
        System.out.println(number);
    }
}

It works as such: in browser number shows as 0 and doesn't change. In console I can see it printing as 1 once and then nothing.

What is wrong here? I am using PrimeFaces 3.4.2 on JSF 2.1


回答1:


The p:poll tag does work for me with the following content, and I am on Primefaces 5.2.

NOTE: <h:head/> tag is needed and without that it does load primefaces related js files that are needed. I believe that is the reason why the refresh is not working in your case.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:head/>

<h:body>
        <h:form>
            <h:outputText id="txt_count" value="#{counterView.number}" />
            <p:poll interval="3" listener="#{counterView.increment}" update="txt_count" />
        </h:form>
</h:body>

</html>

And the managed bean:

@ManagedBean(name="counterView")
@ViewScoped
public class CounterView implements Serializable {

    private int number = 100;

    public int getNumber() {
        return number;
    }

    public void increment() {
        System.out.println("Incrementing....");
        number++;
    }
}

Can you try with these and compare if it works.

UPDATE: Final Solution

To summarize the solution, along the <h:head/> tag, upgrading to newer version (5.x) of Primefaces helped resolve the issue, as indicated in the comments section.



来源:https://stackoverflow.com/questions/36243975/primefaces-poll-does-not-work

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!