为了账号安全,请及时绑定邮箱和手机立即绑定

设置 DateTimeItem 的范围限制

设置 DateTimeItem 的范围限制

森栏 2022-07-20 15:56:01
我特别需要的是防止用户输入将来的日期/时间。这与禁用特定日期不同,因为我需要禁用某个日期的所有日期部分。理想情况下,应该禁用任何未来的日期。目前,我只是在用户输入无效时间时阻止表单提交,但禁用不需要的日期会更好。我浏览了javadoc,一无所获。可能吗?如何?
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

配置范围仅意味着禁用此范围之外的日期。所以这个过程与链接答案中的过程相同。您可以创建一个实用方法来更轻松地创建过滤器。例如,如果谓词返回 false,则configureShowRangeHandler承认Predicate<Date>将禁用日期。这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


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信