p: datePicker dateSelect событие на пустые даты - PullRequest
1 голос
/ 09 апреля 2020

У меня есть два 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 и filterEndDate null. Событие ajax dateSelect никогда не вызывается, когда значение пустое.

1 Ответ

3 голосов
/ 09 апреля 2020

Если вы посмотрите на раздел "Ajax Поведенческие события" документации p:datePicker , вы увидите, что единственным явным образом задокументированным событием является dateSelect. Но есть примечание:

В режиме всплывающего окна DatePicker также поддерживает обычные ajax события поведения, такие как размытие, keyup и т. Д.

Таким образом, вы можете добавить Ajax слушатель и обработать все изменения и использовать его для обработки null значений. Или используйте событие change только для обработки всех изменений, что избавит вас от дополнительных Ajax обращений к серверу.

...