首页 > 解决方案 > p:datePicker dateSelect 空日期事件

问题描述

我有两个p:datePicker,它们工作正常:

<p:outputLabel for="filterStartDate" value="Start Date:" />
<p:datePicker id="filterStartDate" value="#{historyController.filterStartDate}" timeOnly="true" pattern="HH:mm" converter="#{localTimeConverter}">
    <p:ajax event="dateSelect" listener="#{historyController.filterStartDateSelect}"/>
</p:datePicker>

<p:outputLabel for="filterEndDate" value="End Date:" />
<p:datePicker id="filterEndDate" value="#{historyController.filterEndDate}" timeOnly="true" pattern="HH:mm" converter="#{localTimeConverter}">
    <p:ajax event="dateSelect" listener="#{historyController.filterEndDateSelect}"/>
</p:datePicker>

在我的后端,我捕获 ajax 事件的方法是:

private LocalTime filterStartDate;
private LocalTime filterEndDate;

public void filterStartDateSelect(SelectEvent event) {
    filterStartDate = ((LocalTime) event.getObject());
}

public void filterEndDateSelect(SelectEvent event) {
    filterEndDate = ((LocalTime) event.getObject());
}

这很好用,问题是当我想初始化对象filterStartDate和. 当值为空时,它永远不会调用ajax 事件。filterEndDatenulldateSelect

标签: jsfprimefacesdatepicker

解决方案


如果您查看文档的“Ajax 行为事件”部分p:datePicker,您会发现唯一明确记录的事件是dateSelect. 但是有一个说明:

在弹出模式下,DatePicker还支持模糊、keyup 等常规 ajax 行为事件。

因此,您可以添加一个 Ajax 侦听器并处理所有更改并使用它来处理null值。或者只使用更改事件来处理所有更改,这样可以节省对服务器进行的额外 Ajax 调用。


推荐阅读