在DateTimeItem上设置范围限制

问题描述 投票:1回答:1

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

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

我经历了javadoc并没有发现任何东西。可能吗?怎么样?

java gwt smartgwt
1个回答
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静态进口的
© www.soinside.com 2019 - 2024. All rights reserved.