Валидация экранов
Шаги валидации
Перед тем как экран деталей сохраняет данные во время выполнения методов closeWithSave() и save(), он валидирует данные в следующем порядке:
-
Экран вызывает метод
validateUiComponents()бинаViewValidation, который описан ниже. -
Если на первом шаге не возникло ошибок, экран отправляет событие ValidationEvent, которое может быть обработано в контроллере экрана для дополнительной валидации.
Бин ViewValidation
Бин ViewValidation содержит методы для валидации компонентов UI, отображения ошибок валидации и диалоговых окон о несохраненных изменениях. Данный бин используется экранами и диалогами фреймворка и дополнений. Вы также можете использовать его в экранах приложения.
Ниже описаны основные методы бина ViewValidation.
validateUiComponents
Метод validateUiComponents() принимает коллекцию компонентов или контейнер компонентов. Он выполняет валидацию для всех переданных компонентов, реализующих интерфейс SupportsValidation, и возвращает объект ValidationErrors, который содержит найденные ошибки валидации для проверенных компонентов.
Этот метод вызывается экранами деталей во время выполнения методов closeWithSave() и save().
Вы также можете вызывать его в ответ на действия пользователя, например:
public class SampleView extends StandardView {
@Autowired
private ViewValidation viewValidation;
@ViewComponent
private FormLayout form;
@Subscribe("validateBtn")
public void onValidateBtnClick(final ClickEvent<JmixButton> event) {
ValidationErrors errors = viewValidation.validateUiComponents(form);
if (!errors.isEmpty()) {
viewValidation.showValidationErrors(errors);
}
}
}
showValidationErrors
Метод showValidationErrors() выводит уведомление с ошибками валидации, если переданный объект ValidationErrors не пуст. См. пример использования выше.
Заголовок уведомления определяется сообщением с ключом validationFail.title. Вы можете переопределить стандартное сообщение, указав сообщение с этим ключом в пакете сообщений вашего проекта, например:
validationFail.title = Валидация не удалась
showSaveConfirmationDialog
Метод showSaveConfirmationDialog() выводит диалоговое окно подтверждения сохранения или отмены несохраненных изменений. Он используется экранами деталей сущности, когда пользователь закрывает экран с несохраненными изменениями и свойство jmix.ui.view.use-save-confirmation установлено в true (что является значением по умолчанию).
Диалог использует сообщения со следующими ключами:
-
dialogs.closeUnsaved.title- заголовок диалога -
dialogs.saveUnsaved.message- текст диалога -
dialogs.closeUnsaved.save- текст кнопки "Сохранить" -
dialogs.closeUnsaved.discard- текст кнопки "Отменить"
Вы можете переопределить стандартные сообщения, указав сообщения с теми же ключами в пакете сообщений вашего проекта, например:
dialogs.closeUnsaved.title = У вас есть несохраненные изменения
dialogs.saveUnsaved.message = Хотите сохранить изменения перед закрытием?
dialogs.closeUnsaved.save = Сохранить
dialogs.closeUnsaved.discard = Не сохранять
showUnsavedChangesDialog
Метод showUnsavedChangesDialog() выводит диалоговое окно подтверждения игнорирования несохраненных изменений. Он используется экранами деталей сущности, когда пользователь закрывает экран с несохраненными изменениями и свойство jmix.ui.view.use-save-confirmation установлено в false.
Диалог использует сообщения со следующими ключами:
-
dialogs.closeUnsaved.title- заголовок диалога -
dialogs.closeUnsaved.message- текст диалога
Вы можете переопределить стандартные сообщения, указав сообщения с теми же ключами в пакете сообщений вашего проекта, например:
dialogs.closeUnsaved.title = У вас есть несохраненные изменения
dialogs.closeUnsaved.message = Хотите игнорировать несохраненные изменения?