/** * Подготовка LOB-полей перед сабмитом формы * * @param field LOB-поле * @param resultRecord текущий рекорд, по которому готовим поле */ @SuppressWarnings("unchecked") private void prepareLOBField(final JepLargeField field, final JepRecord resultRecord) { field .getHiddenPrimaryKeyField() .setValue( JepHistoryToken.getMapAsToken( clientFactory.getRecordDefinition().buildPrimaryKeyMap(resultRecord))); field.setBeforeSubmitCommand( new ScheduledCommand() { @Override public void execute() { if (submitCounter++ == 0) { JepClientUtil.showLoadingPanel( null, clientFactory.getTexts().loadingPanel_fileLoading()); } } }); field.setAfterSubmitCommand( new JepScheduledCommand<String>() { public void execute() { submitCounter--; String resultHtml = getData(); if (submitSuccessful(resultHtml)) { onSubmitSuccess(resultRecord); } else { onSubmitFailure(resultRecord, resultHtml); } } }); }
/** * Метод, вызываемый после успешного сохранения информации * * @param resultRecord ссылка на созданную запись */ public void onSaveSuccess(JepRecord resultRecord) { submitCounter = 0; for (JepMultiStateField field : fields.values()) { JepLargeField largeField; if ((field instanceof JepLargeField) && (largeField = (JepLargeField) field).isFileSelected()) { prepareLOBField(largeField, resultRecord); largeField.getFormPanel().submit(); } } if (submitCounter == 0) { afterSave(resultRecord); } }