我需要具体的是防止用户输入将来的日期/时间。这与禁用特定日期不同,因为我需要在特定日期禁用所有日期。
理想情况下,应禁用任何未来日期。现在,我只是在用户输入无效时间时阻止表单提交,但禁用不需要的日期会更好。
我经历了javadoc并没有发现任何东西。可能吗?怎么样?
配置范围只是意味着禁用此范围之外的日期。因此,这个过程与linked answer中的过程相同。您可以创建实用程序方法以更轻松地创建过滤器。例如,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
静态进口的