Time for action – using the poll component to display the current time

Let's display live time by polling server time for every second and display it using the poll component.

  1. Create poll.xhtml with a poll component to display currentTime as follows:
    <h:form>
      <p:outputLabel value="Current Time:" /> <p:outputLabel id="currentTime" value="#{serverTimeBean.time}"/>
      <p:poll interval="1" listener="#{serverTimeBean.updateTime()}" update="currentTime"/>
    </h:form>
  2. Create ServerTimeBean.java managed bean with the updateTime() method to set the currentTime value as follows:
    @ManagedBean
    @RequestScoped
    public class ServerTimeBean 
    {
      private String time;
      public void setTime(String time) {
        this.time = time;
      }
      public String getTime() {
        return time;
      }
      public void updateTime() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        this.time = sdf.format(new Date());
      }
      
    }

What just happened?

We have used the <p:poll> component to call listener method updateTime() on ServerTimeBean for every second by specifying interval="1", and updated the view to display current time using AJAX.

The poll component provides the following attributes, which provides additional control on its behavior:

Controlling the polling process using external triggers

Sometimes, we may want to have control on when to start/stop the polling process, stop polling based on some criteria, and so on. The PrimeFaces poll component provides these features with additional attributes giving you full control on polling process.

For example, we want to start polling when the Start button is clicked, and stop polling when the Stop button is clicked.