Создание формы из самой себя

Добрый день, уважаемые коллеги.

Стоит передо мной задача, после закрытия формы ввода задать вопрос “Создать новую запись путем копирования текущих данных”.

После создания формы не могу скопировать данные в новую форму. Вот кусочек кода:

@Subscribe
public void onAfterClose(AfterCloseEvent event) {
dialogs.createOptionDialog()
.withCaption(“Внимание”)
.withMessage(“Создать новую запись?”)
.withActions(
new DialogAction(DialogAction.Type.YES, Action.Status.PRIMARY)
.withHandler(e -> {
createNewField(this.getEditedEntity());
}),
new DialogAction(DialogAction.Type.NO)
).show();
}

// создать новый экран
private void createNewField(IteractionList entity) {
    JobCandidate setJobCandidate = getEditedEntity().getCandidate();
    OpenPosition vacansy = entity.getVacancy();
    Project project = entity.getProject();
    String communicationMethod = entity.getCommunicationMethod();
    Iteraction itercation = entity.getIteractionType();

    IteractionList newItercation = metadata.create(IteractionList.class);

    screenBuilders.editor(IteractionList.class, this)
            .editEntity(newItercation)
            .withInitializer( iteractionList -> {
                getEditedEntity().setCandidate(setJobCandidate);
                newItercation.setVacancy(vacansy);
                newItercation.setProject(project);
                newItercation.setCommunicationMethod(communicationMethod);
                newItercation.setCompanyDepartment(departament);

                iteractionListEditDataManager.commit(newItercation);
            } )
            .withScreenClass(IteractionListEdit.class)
            .build()
            .show();
}

Добрый день.

В приложенном коде есть несколько проблем:

  1. Для создания новой сущности при открытии редактора, необходимо использовать newEntity(), вместо editEntity().
  2. Часть значений проставляются в “старую” сущность.
  3. В initializer не нужно ничего коммитить, он служит для простановки начальных значений.

57

Глеб

P.S. пожалуйста, используйте обратные апострофы для вставки кода.

Большое спасибо за ответ. Поправил как Вы посоветовали. К сожалению есть 2 проблемы:

  1. все таки не инициализируются начальные значения (копирование из старой формы в новую полей)
  2. форма Browse из которой вызывается Edit после записи не обновляется и новые строки показываются только если закрыть и заново загрузить форму из меню

Заранее спасибо.

Не могли бы Вы приложить демо проект в котором проблема воспроизводится?

Глеб