【问题标题】:Vaadin 8 Grid EditorSaveListenerVaadin 8 网格编辑器SaveListener
【发布时间】: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() 操作时,使用写操作来获取数据是很奇怪的。但它有效。
  • 太棒了。我在下面添加了答案,所以你可以检查一下。 :)

标签: grid vaadin vaadin8


【解决方案1】:

要获取值,请使用:

binder.writeBean(aCarObject);

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多