Установить пределы диапазона для DateTimeItem - PullRequest
0 голосов
/ 04 марта 2019

Что мне конкретно нужно, это запретить пользователю вводить дату / время в будущем.Это отличается от отключения определенной даты, так как мне нужно отключить ВСЕ даты на определенную дату.

В идеале любые будущие даты должны быть отключены.Пока я просто запрещаю отправку формы, когда пользователь вводит неверное время, но лучше отключить нежелательные даты.

Я просмотрел javadoc и ничего не нашел.Является ли это возможным?Как?

1 Ответ

0 голосов
/ 08 марта 2019

Настройка диапазона означает просто отключение дат вне этого диапазона.Таким образом, процесс такой же, как и в связанном ответе .Вы можете создать служебный метод для создания фильтров проще.Например, configureShowRangeHandler допускает Predicate<Date>, который отключит дату, если предикат вернет false.enableUntilToday - простой пример ограничения выбираемых дат до сегодняшнего дня.

{
    DatePicker dp = new DatePicker();
    Predicate<Date> enableUntilTodayDates = d -> !d.after(new Date());
    configureShowRangeHandler(dp, enableUntilTodayDates);
}

static HandlerRegistration configureShowRangeHandler(DatePicker dp, Predicate<Date> fn) {
    return dp.addShowRangeHandler(ev -> {
        for (Date t = copyDate(ev.getStart()); t.before(ev.getEnd()); addDaysToDate(t, 1)) {
            dp.setTransientEnabledOnDates(fn.test(t), t);
        }
    });
}
  • copyDate и addDaysToDate статически импортированы из CalendarUtil
...