【发布时间】:2018-05-03 08:44:36
【问题描述】:
我们使用网格来呈现一些数据。这个网格没有使用数据提供者,而是设置了它的项目。
我们正在处理缓冲的 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 发起任何请求。
有没有人知道任何可能的解决方案或更好的方法来达到我想要实现的目标?
提前致谢
【问题讨论】:
标签: vaadin8 vaadin-grid