【发布时间】:2017-07-18 16:03:44
【问题描述】:
在 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() 检索的值。
所以我尝试了很多方法,但目前我无法使用保存侦听器获取编辑后的值,以便使用它,并寻求一些帮助或解决问题的灵感。
【问题讨论】:
-
您是否尝试过
binder.writeBean(aCarObject)来获取值?根据文档,它将字段的值写入给定对象,但如果任何字段无效,则会引发异常。 -
谢谢。作品。当有 getBean() 操作时,使用写操作来获取数据是很奇怪的。但它有效。
-
太棒了。我在下面添加了答案,所以你可以检查一下。 :)