Ajax Conditional update on Primefaces

Viewed 228

Is it possible to do a conditional update with Ajax. I have two calendar components and the code is as follows

Calendar component 1 (workDate)

<h:outputLabel value="#{lbl.WorkDate}" for="workDate" rendered="#{!userManager.customerUser}"/>
<p:calendar id="workDate" value="#{jobs_Builder.selected.workDate}" pattern="dd/MM/yyyy" mask="true" rendered="#{!userManager.customerUser}" mindate="Date()">
      <p:ajax event="dateSelect" update="requestedDeliveryDate" />
</p:calendar>

Calendar component 2(requestedDeliveryDate)

<h:outputLabel value="#{lbl.RequestedDeliveryDate}" for="requestedDeliveryDate" rendered="#{!userManager.customerUser}"/>
<p:calendar id="requestedDeliveryDate" value="#{jobs_Builder.selected.requestedDeliveryDate}" pattern="dd/MM/yyyy" mask="true" rendered="#{!userManager.customerUser}" mindate="#{jobs_Builder.selected.workDate}"/>

The behavior is whenever the date is set in wordkdate, the requestedDeliveryDate is reset, but what I want is to get that reset only if the requestedDeliveryDate is earlier than the workDate.

Is this something which I can do?

1 Answers
  1. Change your dateSelect event not to update anything but use a Java listener instead like..
<p:ajax event="dateSelect" listener="#{controller.onDateSelect}" />
  1. In your Java method check for your two dates and if your condition is met update the UI component from this method.
public void onDateSelect() {
    if (date1 > date2) {
        // update other calendar
        PrimeFaces.current().ajax().update("requestedDeliveryDate");
    }
}
Related