Валидация экранов

Шаги валидации

Перед тем как экран деталей сохраняет данные во время выполнения методов closeWithSave() и save(), он валидирует данные в следующем порядке:

  1. Экран вызывает метод validateUiComponents() бина ViewValidation, который описан ниже.

  2. Если на первом шаге не возникло ошибок, экран отправляет событие 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. Вы можете переопределить стандартное сообщение, указав сообщение с этим ключом в пакете сообщений вашего проекта, например:

messages_ru.properties
validationFail.title = Валидация не удалась

showSaveConfirmationDialog

Метод showSaveConfirmationDialog() выводит диалоговое окно подтверждения сохранения или отмены несохраненных изменений. Он используется экранами деталей сущности, когда пользователь закрывает экран с несохраненными изменениями и свойство jmix.ui.view.use-save-confirmation установлено в true (что является значением по умолчанию).

Диалог использует сообщения со следующими ключами:

  • dialogs.closeUnsaved.title - заголовок диалога

  • dialogs.saveUnsaved.message - текст диалога

  • dialogs.closeUnsaved.save - текст кнопки "Сохранить"

  • dialogs.closeUnsaved.discard - текст кнопки "Отменить"

Вы можете переопределить стандартные сообщения, указав сообщения с теми же ключами в пакете сообщений вашего проекта, например:

messages_ru.properties
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 - текст диалога

Вы можете переопределить стандартные сообщения, указав сообщения с теми же ключами в пакете сообщений вашего проекта, например:

messages_ru.properties
dialogs.closeUnsaved.title = У вас есть несохраненные изменения
dialogs.closeUnsaved.message = Хотите игнорировать несохраненные изменения?