java - Vaadin 网格 - 当 setEnableEditor= true 时保存/取消

标签 java vaadin vaadin7 vaadin-grid

我是 vaadin 新手,当 setEditorEnabled = true 时,我对 savecancel button 感到有点困惑

您是否需要提供额外的代码才能保存数据,或者当您单击“保存”时它会自动将所有数据保存到数据库中?

如果有额外的代码,如何为保存和取消按钮添加监听器?

谢谢!

最佳答案

如果您使用缓冲模式,则当您按“保存”按钮时,编辑的值将写入源对象。如果您使用无缓冲模式,则版本会立即写入,因此“保存”和“取消”按钮变得毫无意义。 如果要将编辑后的对象写回数据库,则需要手动添加该功能。在这种情况下,实用的做法是使用缓冲模式,并将数据库调用方法添加到按下保存按钮时调用的方法中。

除了将其添加到 CommitHandlerpostCommit方法,就像 Daniel Dubec 所写的那样,您还可以覆盖 saveEditor()doCancelEditor() Grid的方法.

class MyGrid extends Grid {

    public MyGrid() {
        setEditorEnabled(true);
        setEditorBuffered(true);
    }

    @Override
    public void saveEditor() throws CommitException {
        super.saveEditor();
        // You can persist your data here.
        Notification.show("Item " + getEditedItemId() + " was edited.");
    }

    // Be aware that doCancelEditor() is called whenever super.saveEditor() is called!
    @Override
    protected void doCancelEditor() {
        super.doCancelEditor();
        // editedItemId was already set to 'null'.
        Notification.show("Cancel button was pressed");
    }
}

什么super.saveEditor()实际上是在调用 commit() editorFieldGroup上的方法。但这仅在可编辑网格处于缓冲模式时才有意义。 Read more on Field Buffering here 。 那么会发生什么,当您按下保存按钮时,super.saveEditor()被调用,然后首先触发预提交事件,然后将编辑器字段值中的更改更新到数据源(即提交本身),然后触发提交后事件。 doCancelEditor()每当编辑器本身关闭时都会调用该方法,这就是为什么在保存后也会调用它。

关于java - Vaadin 网格 - 当 setEnableEditor= true 时保存/取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30706276/

相关文章:

java - Android StAX 游标解析器 - 找不到方法 javax.xml.stream.XMLInputFactory.newInstance

spring - Vaadin 7.4、Spring、Tomcat 7、使用@WebServlet 更改上下文根

java - 选择 Web 用户界面库

java - 获取 Activity UI 的 "Session Expired"消息

java - "if"库存中的每个项目,看起来很丑

java - 当对象传递到多层时检查 null 的最佳方法是什么

java - 在新的 Vaadin 7.3 应用程序中从 "Valo"主题更改为 "Reindeer"

重新启动 Vaadin 应用程序时抛出 java.io.NotSerializedException

java - JPAContainer过滤器是什么样的?

java - 如何使用 Apache 客户端 4.5.5 处理无效的 SSL 证书?