Ajax Primefaces 有条件更新

Ajax Conditional update on Primefaces

是否可以使用 Ajax 进行条件更新。我有两个日历组件,代码如下

日历组件 1(工作日期)

<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>

日历组件 2(请求的交货日期)

<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}"/>

只要在 wordkdate 中设置日期,就会重置 requestedDeliveryDate,但我想要的是仅当 requestedDeliveryDate 早于workDate.

这是我能做的事吗?

  1. 将您的 dateSelect 事件更改为 update 任何东西,而是使用 Java 侦听器,而不是像..
<p:ajax event="dateSelect" listener="#{controller.onDateSelect}" />
  1. 在您的 Java 方法中检查您的两个日期,如果满足您的条件,则从该方法更新 UI 组件。
public void onDateSelect() {
    if (date1 > date2) {
        // update other calendar
        PrimeFaces.current().ajax().update("requestedDeliveryDate");
    }
}