valueChangeListener returns 空值事件

event of valueChangeListener returns null value

如果我在 PickerField 上获得 valueChangeListener 的值,如果我第二次选择同一个客户,它 returns 为 null。

这是 vaadin 错误吗?

@Named("fieldGroup.customer")
PickerField customer;


@Override
public void init(Map<String, Object> params) {
    super.init(params);

    customer.addValueChangeListener(e -> {
        if (e.getValue() != null) {
            showNotification("e.value: " + e.getValue(), NotificationType.HUMANIZED);
        } else {
            showNotification("e.value is null", NotificationType.ERROR);
        }
    });
}

我在 GitHub

上创建了一个示例项目

现在,如果新项与当前项具有相同的 ID,则 PickerField LookupAction 会调用 setValue() 方法两次(使用空值和选定项),以确保以前的项将被新项替换。这导致两次调用 ValueChangeListener 为 null,然后为新值。

这是 CUBA 的一个已知 API 问题,我们可能会在平台的下一个主要版本中尝试更改它,但现在您必须检查 null e.getValue()和绑定到 PickerField 的实体属性。