java - Vaadin 数据字段

标签 java vaadin vaadin7

我想要 PopupDataField 来更改表单中的日期,并通过 NativeSelect 组件分别更改小时和分钟。那么我想要一些日期,其中包含来自 PopupDataField 的年、月和日以及来自那些 NativeSelects 的时间。我不知道当我打电话时如何保存这个“日期”

popupDateField.getValue()

enter image description here 我正在以小时和分钟接收整个数据,通常与 NativeSelects 上的数据不同。 我试图禁用保存时间

setResolution(Resolution.DAY);

但它不起作用。

我不知道该怎么做,有人可以帮助我吗?

我想要一些字段数据 - 其中 DateField 为年、月、日,NativeSelects 为小时、分钟

最佳答案

PopupDateField将始终返回 Date对象作为其值,因此您将从该组件收到小时和分钟。解决方案很简单——忽略它们即可。构造您的 DateLocalDate来自所有组件的对象,而不仅仅是 PopupDateField

SSCCE :

@Override
protected void init(VaadinRequest request) {
    HorizontalLayout layout = new HorizontalLayout();
    PopupDateField popupDateField = new PopupDateField();
    NativeSelect hoursSelect = new NativeSelect("Hours");
    for(int i=0; i<24; i++){
        hoursSelect.addItem(i);
    }
    NativeSelect minutesSelect = new NativeSelect("Minutes");
    for(int i=0; i<60; i++){
        minutesSelect.addItem(i);
    }

    class MyValueChangeListener implements ValueChangeListener{
        public void valueChange(ValueChangeEvent event) {
            LocalDate date = popupDateField.getValue().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
            int year = date.getYear();
            int month = date.getMonth().getValue();
            int days = date.getDayOfMonth();
            int minutes = minutesSelect.getValue() == null ? 0 : (int) minutesSelect.getValue();
            int hours = hoursSelect.getValue() == null ? 0 : (int) hoursSelect.getValue();
            System.out.println(LocalDateTime.of(year,  month, days, hours, minutes));
        }
    }
    ValueChangeListener listener = new MyValueChangeListener();
    minutesSelect.addValueChangeListener(listener);
    hoursSelect.addValueChangeListener(listener);
    popupDateField.addValueChangeListener(listener);

    setContent(layout);

    layout.addComponent(popupDateField);
    layout.addComponent(hoursSelect);
    layout.addComponent(minutesSelect);
}

您还可以通过添加 getLocalDate 方法来扩展 PopupDateField 类,该方法会将 Date 转换为 LocalDate

关于java - Vaadin 数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33959586/

相关文章:

java - 用于第 3 方库的自定义 jackson 反序列化器

java - 当字符串中有重复项时,查找子字符串的中间索引

java - JEE 的 Vaadin 和 Spring 之间如何选择

polymer - 如何在 Vaadin 7 应用程序中添加 Vaadin polymer 元素?

java - 异常没有被它的 catch block 捕获,然后该方法抛出另一种异常

java - Spring Boot - 根据要求四舍五入双 PathVariable

javascript - Vaadin JavaScript API 集成

java - Vaadin:如何使 validator 仅接受数字和一位小数

javascript - Vaadin7 jQuery UI 集成

Vaadin 通过链接加载另一个 View ?