【问题标题】:Ajax Conditional update on PrimefacesPrimefaces 上的 Ajax 条件更新
【发布时间】:2020-11-06 07:36:56
【问题描述】:

是否可以使用 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(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}"/>

只要在wordkdate 中设置日期,就会重置requestedDeliveryDate,但我想要的是只有在requestedDeliveryDate 早于workDate 时才能重置。

这是我能做的吗?

【问题讨论】:

  • 看看stackoverflow.com/questions/16378099/…这个原理是一样的。
  • 是的,在您的dateSelect 事件中不要使用update 调用Java listener 方法,在该方法中您可以检查日期,如果日期符合您的要求,那么您可以选择使用 PrimeFaces.current().ajax().update("requestedDeliveryDate"); 从服务器端更新另一个日历
  • 非常感谢,@Melloware。像魅力一样工作
  • 好的,如果您不介意选择它作为解决方案,我将其发布为答案

标签: jsf primefaces


【解决方案1】:
  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");
    }
}

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 2013-05-07
    • 2012-12-04
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多