Валидация экранов
Шаги валидации
Перед тем как экран деталей сохраняет данные во время выполнения методов 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 = Хотите игнорировать несохраненные изменения?