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.
- Create
poll.xhtml
with a poll component to displaycurrentTime
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>
- Create
ServerTimeBean.java
managed bean with theupdateTime()
method to set thecurrentTime
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:
AttributeName |
Description |
---|---|
|
JavaScript handler to execute before AJAX request begins. |
|
JavaScript handler to execute when AJAX request is completed. |
|
JavaScript handler to execute when AJAX request succeeds. |
|
JavaScript handler to execute when AJAX request fails. |
|
In autoStart mode, polling starts automatically on page load, to start polling on demand set it to false. |
|
Stops polling when true. |
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.