如果我在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
上创建了一个示例项目答案 0 :(得分:1)
现在PickerField LookupAction调用setValue()方法两次(使用空值和选中)如果新项具有与当前相同的id,以确保先前的项将被替换为new。这导致两次调用ValueChangeListener并使用null,然后使用新值。
这是CUBA的已知API问题,我们将尝试更改它可能在平台的下一个主要版本中,但现在您必须检查null e.getValue()和绑定到a的实体属性PickerField。