Мы используем сетку для представления некоторых данных. В этой сетке не используется поставщик данных, а задаются его элементы.
Мы работаем над буферизованным модом, но мы все еще хотим показать модал, информирующий о том, что мы собираемся сохранить, с возможностью сохранить или отменить.
Метод 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.
Кто-нибудь знает какое-либо возможное решение этого или лучший способ достичь того, чего я пытаюсь достичь?
Заранее спасибо