Vaadin 8.4.0网格缓冲区保存后用于保存确认的模式

时间:2018-05-03 08:44:37

标签: vaadin8 vaadin-grid

我们正在使用网格来呈现一些数据。此网格不使用数据提供程序,而是设置其项目。

我们正在研究缓冲modd,但我们仍然希望显示一个模态,告知我们要保存的内容,并保存或取消。

SaveEditor方法已从我们当前版本(8.4.0)的网格类中删除,因此不能这样做。

我已经找到了一个紧密的解决方案,但还有一些问题。 我有扩展的网格组件,以便能够创建我自己的编辑器:

public class MyGridComponent extends Grid<MyData> {

public MyGridComponent (Class<MyData> beanType) {
    super(beanType);
}

@Override
protected Editor<MyData> createEditor() {
    return new MyGridEditor(this.getPropertySet());
}

}

在我的编辑器中,我已经覆盖了以下方法:

@Override
protected void doEdit(OutcomeWagerLimit bean) {
    copyMyBean = bean;
    super.doEdit(bean);
}

@Override
public boolean save() {
    String desc = copyMyBean.getDescription();

    StringBuilder captionBuilder = new StringBuilder()
            .append("Save ")
            .append(desc)
            .append("?");
    StringBuilder messageBuilder = new StringBuilder()
            .append("Do you really want to save ")
            .append(desc)
            .append("?");

    openConfirmMsgBox(captionBuilder.toString(), messageBuilder.toString(),() -> super.save(), ()->super.cancel());
    return true;
}

使用此代码单击“保存”将打开我的确认模式。如果单击“保存”,一切都可以正常运行,但是单击我将调用EditorImpl.cancel()方法的模态取消会以一种奇怪的方式运行。单击我的模态上的取消将关闭编辑模式,但如果我再次编辑任何其他行(双击它)网格的保存和取消按钮(不是模态的)停止工作。没有从客户端向vaadin的servlet发出任何请求。

有没有人知道任何可能的解决方案或更好的方法来达到我想要实现的目标?

提前致谢

1 个答案:

答案 0 :(得分:0)

上午,

刚设法做到了。由于不使用dataprovider而是普通列表,我负责在其他saveEventListener中保存数据。这是呈现模态的时刻,在“ok”情况下将其保留在数据库中。

因此无需覆盖EditorImpl保存方法并在saveEventListener中执行此操作。

由于