/** * Действие в случае ошибки при сабмите.<br> * По умолчанию выдаёт сообщение об ошибке, и далее проверяет, остались ли ещё незавершённые * сабмиты. Если нет, то скрывает индикатор загрузки и вызывает afterSave(). Может быть * переопределён в классе-наследнике. * * @param resultRecord запись * @param resultHtml полученный от сервера результат сабмита в виде строки */ protected void onSubmitFailure(JepRecord resultRecord, String resultHtml) { messageBox.showError(clientFactory.getTexts().errors_file_uploadError() + "\n" + resultHtml); if (submitCounter == 0) { JepClientUtil.hideLoadingPanel(); afterSave(resultRecord); } }
/** * Обработчик события сохранения 'save' В зависимости от состояния выполняет сохранение * существующего или создание нового объекта. * * <p>Метод используется в случае использования стандартного сервиса работы с данными * JepStandardService. При реализации в прикладном модуле собственного сервиса необходимо в * презентере-наследнике прикладного модуля реализовать перекрывающий метод onSave(). */ public void onSave(SaveEvent event) { if (fields.isValid()) { JepRecord formProperties = fields.getValues(); logger.debug(this.getClass() + ".onSave(): formProperties = " + formProperties); // Для подчинённых объектов добавляется foreignKey. if (JepScopeStack.instance.size() > 1 || !JepScopeStack.instance.peek().isMainActive()) { JepClientUtil.addForeignKey(formProperties); } // Для режима редактирования текущую запись // необходимо дополнить или переписать значениями с формы. if (EDIT.equals(_workstate)) { JepRecord updatedRecord = new JepRecord(currentRecord); updatedRecord.update(formProperties); formProperties = updatedRecord; } // Если не выполнены первоначальные условия проверки, то выходим из сохранения. if (!beforeSave(formProperties)) return; eventBus.setSaveButtonEnabled(false); if (CREATE.equals(_workstate)) { saveOnCreate(formProperties); } else if (EDIT.equals(_workstate)) { saveOnEdit(formProperties); } } else { messageBox.showError(clientFactory.getTexts().errors_dialog_form_incorrectInputData()); } }
/** * При необходимости выполнить какие-либо дополнительные действия после сохранения метод * перекрывается наследниками. * * @param resultRecord результирующая запись */ protected void afterSave(JepRecord resultRecord) { // Поскольку БД-модуль не обязан возвращать родительский ключ. if (JepScopeStack.instance.size() > 1 || !JepScopeStack.instance.peek().isMainActive()) { JepClientUtil.addForeignKey(resultRecord); } // Текущую запись обновляем ТОЛЬКО после успешного сохранения. eventBus.setCurrentRecord(resultRecord); // Вызов перехода на новый Place происходит ОБЯЗАТЕЛЬНО ПОСЛЕ подготовки данных для записи в // History // (изменения Scope в обработчиках шины событий). placeController.goTo(new JepViewDetailPlace()); }
/** Обработчик события поиска "doSearch". */ public void onDoSearch(DoSearchEvent event) { if (fields.isValid()) { // Получим значения с формы. JepRecord formProperties = fields.getValues(); // Добавим foreignKey. JepClientUtil.addForeignKey(formProperties); PagingConfig pagingConfig = new PagingConfig(formProperties); eventBus.search(pagingConfig); // Вызов перехода на новый Place происходит ОБЯЗАТЕЛЬНО ПОСЛЕ подготовки данных для записи в // History // (изменения Scope в обработчиках шины событий). placeController.goTo(new JepViewListPlace()); } else { messageBox.showError(JepTexts.errors_dialog_form_incorrectInputData()); } }
/** * Действие в случае успешного сабмита.<br> * По умолчанию проверяет, остались ли ещё незавершённые сабмиты, и если нет, то скрывает * индикатор загрузки и вызывает afterSave(). Может быть переопределён в классе-наследнике. * * @param resultRecord запись */ protected void onSubmitSuccess(JepRecord resultRecord) { if (submitCounter == 0) { JepClientUtil.hideLoadingPanel(); afterSave(resultRecord); } }