Здравствуйте! В редакторе храним 2 сущности. Question
и Answer
. Если идет создание сущности, то создается только Question
, если редактирование и у юзера есть права, то при открытии экрана создается Answer
и добавляется в контекст dataContext.merge(answer)
. При закрытии экрана проверяем, есть ли изменения в Answer
и если нет, то убираем его из из контекста dataContext.evict(answer)
. Но окно о том, что есть изменения в сущности все равно появляется.
После dataContext.evict(answer)
, dataContext.getModified()
возвращает пустой список. Пробывали сделать как в вопросе, но это нам не подходит, тк при закрытии экрана через ESC или крестик в правом верхнем углу, окон об изменениях все равно появляется. Не подскажите что можно сделать?
Добрый день,
Сейчас в экранах CUBA 7 логика редактора сосредоточена в базовом классе StandardEditor и легко доступна для изучения и переопределения.
Логика “при закрытии экрана через ESC или крестик в правом верхнем углу, окон об изменениях все равно появляется” - это методы
com.haulmont.cuba.gui.screen.StandardEditor#preventUnsavedChanges
и
com.haulmont.cuba.gui.screen.StandardEditor#hasUnsavedChanges
К тому же как видно, разработчики предусмотрели флажок:
com.haulmont.cuba.gui.screen.StandardEditor#modifiedAfterOpen
// whether user has edited entity after screen opening
private boolean modifiedAfterOpen = false;
Можно попробовать сбросить его в false при открытии экрана после того, как вы создали Answer.