1

如果我在 PickerField 上获得 valueChangeListener 的值,如果我第二次选择同一个客户,它会返回 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 上创建了一个示例项目

4

1 回答 1

1

现在 PickerField LookupAction 调用 setValue() 方法两次(使用 null 值和选择)如果新项目与当前项目具有相同的 id 以确保前一个项目将被新项目替换。这导致 ValueChangeListener 两次调用 null 然后使用新值。

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

于 2016-11-03T11:12:00.157 回答