Value Change listener not working in primefaces calendar Value Change listener not working in primefaces calendar ajax ajax

Value Change listener not working in primefaces calendar


In more recent versions of PrimeFaces, SelectEvent should be usedsee the following code snippet

<p:calendar id="event" value="#{calendarView.date4}">    <p:ajax event="dateSelect" listener="#{calendarView.onDateSelect}" update="msgs" /></p:calendar>
public void onDateSelect(SelectEvent event) {    FacesContext facesContext = FacesContext.getCurrentInstance();    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", format.format(event.getObject())));}

In older primefaces versions use DateSelectEvent

<p:ajax event="dateSelect" listener="#{caseUitility.dateChange}"/>
public void dateChange(DateSelectEvent event) {    Date date = event.getDate();    System.out.println("File Date: " + date);    System.out.println("Hello... I am in DateChange");}


You should add an update to your p:ajax. I had problems when selecting a date with the datepicker and when manually typing it in the field. The change event was not triggerd both ways. Therefore I used an p:ajax and a f:ajax with different events.

<p:calendar value="#{caseUitility.caseMaster.fileDate}" id="fileDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true">    <p:ajax event="dateSelect" listener="#{caseUitility.dateSelect}" update="lastDate"/>    <f:ajax event="change" execute="@this" render="lastDate" listener="#{caseUitility.dateChange}"/></p:calendar>

And in the bean

public void dateSelect(DateSelectEvent event) {    caseMaster.setFileDate(event.getDate());    System.out.println("File Date: " + caseMaster.getFileDate());    System.out.println("Hello... I am in DateChange");}public void dateChange(AjaxBehaviorEvent event) throws MWSException {    System.out.println("File Date: " + caseMaster.getFileDate());    System.out.println("Hello... I am in DateChange");}

Hope this helps


My solution:

<p:ajax event="change" listener="#{caseUitility.dateChange}"/>

And in the bean:

public void dateChange(SelectEvent event) {         date = (Date)event.getObject();}