在DateTimeItem

时间:2019-03-04 13:16:23

标签: java gwt smartgwt

我特别需要防止用户输入将来的日期/时间。这与禁用特定日期不同,因为我需要在特定日期中禁用所有日期。

理想情况下,应该禁用将来的任何日期。现在,我只是在用户输入无效时间时阻止表单提交,但是禁用不需要的日期会更好。

我遍历了Javadoc,却一无所获。可能吗?怎么样?

1 个答案:

答案 0 :(得分:2)

配置范围仅意味着禁用该范围以外的日期。因此,该过程与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);
        }
    });
}
  • copyDateaddDaysToDate是从CalendarUtil
  • 静态导入的