【发布时间】:2022-12-22 01:10:35
【问题描述】:
我想实现一个日期选择器,其中“22”作为年份的键盘条目自动设置为“2022”。所有两位数年份也是如此。我还想支持本地化的日期格式,因为该产品在全球范围内使用。
因此,我可以在其中指定“dd.mm.yy”等格式的 I18nDatepicker 组件无济于事,因为它会拒绝美国标准格式。我想到的是这个小的 ValueChangeListener:
datePicker.addValueChangeListener(event -> {
datePicker.setValue(LocalDate.of(
datePicker.getValue().getYear() % 2000 + 2000,
datePicker.getValue().getMonth(),
datePicker.getValue().getDayOfMonth()
));
问题是如果日期不同(对于 Vaadin),“setValue”方法将再次触发更改事件。因此,该组件的所有更改侦听器将执行两次,一次是两位数年份,另一次是正确年份。这也可能是数据库查询,这是不好的。
从 Datepicker 扩展的自定义 datepicker 组件不能解决这个问题(据我所知),除非我更改“getValue”方法,这对我来说并不是一个好的解决方案。
我忽略了什么吗?非常感谢其他想法。
谢谢
【问题讨论】:
标签: vaadin14