Как отображать сообщения в Thymeleaf и Spring Boot?
Я создал веб-приложение Spring Boot, которое использует Thymeleaf в качестве механизма шаблона. Я сконфигурировал MessageSource
для поиска сообщений в подпапке:
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setFallbackToSystemLocale(false);
messageSource.setCacheSeconds(0);
return messageSource;
}
В этой папке я создал файл messages_de.properties
с содержимым ticket.type.BUG=Fehler
. В моем шаблоне я пытаюсь отобразить текст следующим образом:
<p th:text="#{ticket.type.BUG}">BUG</p>
Но когда страница отображается, я получаю следующее:
<p>??ticket.type.BUG_de_DE??</p>
Что мне не хватает? Нужно ли настраивать дополнительные beans?
P.S:.
На "стороне сервера" я могу получить сообщение с помощью MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
.
Ответы
Ответ 1
Поскольку я использую Spring Boot, MessageSource
настроен с MessageSourceAutoConfiguration
. Эти параметры можно легко изменить в файле application.properties
. В моем случае мне пришлось добавить в этот файл следующее:
spring.messages.basename=i18n/messages
Ответ 2
И добавьте это в свой application.properties
файл
#messages
spring.messages.basename=i18n/messages
и сохраните файл в правильной папке, как указано выше.
вам не нужно messageSource
bean
Ответ 3
Как я решил, что обмен сообщениями i18n состоял в том, чтобы определить MessagesSource
bean, как вы. Кроме того, мне пришлось переопределить метод getValidator()
WebMvcConfigurerAdapter
.
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource( messageSource() );
return validator;
}
После этого это сработало для меня.
Ответ 4
Источник сообщения будет относиться к пути к классам:
messageSource.setBasename(" classpath:i18n/messages");
Вот учебник, на который я ссылался для тимелеафа и spring= http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html
Ответ 5
Есть ли файл messages.properties
(no _de
) для возврата? Это работает? Ваш браузер установлен в локаль DE_de
?