valueChangeListener的事件返回null值

时间:2016-11-03 09:40:01

标签: vaadin cuba-platform

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

这是一个vaadin bug吗?

@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

上创建了一个示例项目

1 个答案:

答案 0 :(得分:1)

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

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