2

在 Vaadin 8 中,给定以下 Grid 定义:

    grid = new Grid<>();
    grid.getEditor().setEnabled(true);
    carBinder = grid.getEditor().getBinder();

和:

    grid.getEditor().addSaveListener(event -> {
    try {
        Binder<Car> binder = event.getSource().getBinder();
        grid.getDataProvider().refreshAll();
    } catch(Exception e) 
        ExceptionNotification.show(e);
    }
    });

我遇到的问题是,我目前无法从网格编辑器访问修改后的值,既不能通过event.getSource()也不能通过活页夹,在本地或在类范围内定义。

在调试器中,我在 Vaadin 类com.vaadin.ui.components.grid.EditorImpl中看到了一个已编辑的属性,其中包含值,但它是私有的,因此无法访问。

在调试中 binder.bean 的值为 NULL。这将是通过 binder.getBean() 检索的值。

所以我尝试了很多方法,但目前我无法使用保存侦听器获得编辑后的值,以便使用它,并寻找一些帮助或灵感来解决问题。

4

2 回答 2

1

我遇到了同样的问题。经过调查,我被告知它将在即将发布的 Vaadin 8.0.3 中修复。

https://github.com/vaadin/framework/issues/8658

于 2017-03-17T06:42:03.563 回答
1

要获取值,请使用:

binder.writeBean(aCarObject);

根据文档,它将字段的值写入给定对象,但如果任何字段无效,则会引发异常。

于 2017-03-01T08:20:04.647 回答