Рубрики
Без рубрики

Пользовательский источник сообщений проверки в Spring Boot

Узнайте, как зарегистрировать пользовательский источник сообщений для сообщений проверки в Spring Boot.

Автор оригинала: baeldung.

1. Обзор

Источник сообщений – это мощная функция, доступная в приложениях Spring. Это помогает разработчикам приложений обрабатывать различные сложные сценарии с написанием большого количества дополнительного кода, такого как конфигурация для конкретной среды, интернационализация или настраиваемые значения.

Еще одним сценарием может быть изменение сообщений проверки по умолчанию на более удобные для пользователя/пользовательские сообщения.

В этом руководстве мы увидим, как настроить и управлять пользовательской проверкой Источника сообщений в приложении с помощью Spring Boot .

2. Зависимости Maven

Давайте начнем с добавления необходимых зависимостей Maven:


    org.springframework.boot
    spring-boot-starter-web


    org.springframework.boot
    spring-boot-starter-validation

Вы можете найти последние версии этих библиотек в Maven Central .

3. Пример Пользовательского сообщения Проверки

Давайте рассмотрим сценарий, в котором мы должны разработать приложение, поддерживающее несколько языков. Если пользователь не предоставляет правильные данные в качестве входных данных, мы хотели бы показать сообщения об ошибках в соответствии с языковым стандартом пользователя.

Давайте возьмем пример бина формы входа в систему:

public class LoginForm {

    @NotEmpty(message = "{email.notempty}")
    @Email
    private String email;

    @NotNull
    private String password;

    // standard getter and setters
}

Здесь мы добавили ограничения проверки, которые проверяют, не предоставлено ли электронное письмо вообще или не предоставлено, но не соответствует стандартному стилю адреса электронной почты.

Чтобы показать пользовательское и зависящее от локали сообщение, мы можем предоставить заполнитель, как указано в аннотации @NotEmpty .

Свойство email.notempty будет разрешено из файлов свойств с помощью конфигурации Источник сообщения .

4. Определение компонента MessageSource

Контекст приложения делегирует разрешение сообщения компоненту с точным именем источник сообщения.

ReloadableResourceBundleMessageSource является наиболее распространенной реализацией MessageSource , которая разрешает сообщения из пакетов ресурсов для разных локалей:

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource
      = new ReloadableResourceBundleMessageSource();
    
    messageSource.setBasename("classpath:messages");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}

Здесь важно указать базовое имя , так как имена файлов, зависящие от локали, будут разрешены на основе предоставленного имени.

5. Определение LocalValidatorFactoryBean

Чтобы использовать пользовательские сообщения имен в файле свойств, например, нам нужно определить LocalValidatorFactoryBean и зарегистрировать MessageSource:

@Bean
public LocalValidatorFactoryBean getValidator() {
    LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
    bean.setValidationMessageSource(messageSource());
    return bean;
}

Однако обратите внимание, что если бы мы уже расширили WebMvcConfigurerAdapter , чтобы избежать игнорирования пользовательского валидатора, нам пришлось бы установить валидатор, переопределив метод getValidator() из родительского класса.

Теперь мы можем определить сообщение свойства, как:

email.notempty=”

вместо

“javax.проверка.ограничения.NotEmpty.message=”

6. Определение файлов Свойств

Последним шагом является создание файла свойств в src/основные/ресурсы каталог с именем, указанным в базовое имя в шаге 4:

# messages.properties
email.notempty=Please provide valid email id.

Здесь мы можем воспользоваться преимуществами интернационализации наряду с этим. Допустим, мы хотим показать сообщения для французского пользователя на его языке.

В этом случае мы должны добавить еще один файл свойств с именем messages_fr.properties в том же месте (никаких изменений кода не требуется):

# messages_fr.properties
email.notempty=Veuillez fournir un identifiant de messagerie valide.

7. Заключение

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

Мы также можем использовать поддержку интернационализации, чтобы сделать приложение более удобным для пользователя.

Как всегда, полный исходный код доступен на GitHub .