Как прочитать значения из файла свойств в thymleaf

#java #html #spring #spring-boot #thymeleaf

#java #HTML #spring #весенняя загрузка #thymeleaf

Вопрос:

Есть ли способ прочитать значения из файла свойств в thymleaf с помощью spring boot? например: — сообщения о проверке, метки загрузки из файла свойств.

Я использую spring boot версии 2.1.3 и thymleaf версии 3.0.11, мне нужно динамически устанавливать метки в моем приложении, используя файл свойств. Я не смог найти способ получить доступ к файлу свойств непосредственно в thymleaf.

Я попытался создать файл lables.properties в ресурсах, например:-

 field1 = "Name"
field2 = "Description"
  

Я попытался получить доступ к thymleaf, используя вот так,

 <a href="./admin"><p class="text-uppercase" th:text="#{field1}"></p></a> 
  

Но это работало не так.

В моем представлении HTML это отображается как ??label1_en_US??». Кто-нибудь может мне помочь разобраться в этом?

Ответ №1:

Попробуйте переименовать свой lables.properties в messages.properties , чтобы проблема разрешилась автоматически при загрузке Spring.

Если это все еще не работает, рассмотрите возможность определения явного источника сообщения, такого как:

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

Базовые имена — это, по сути, имена ваших файлов свойств без .properties расширения.

Комментарии:

1. Спасибо за ответ, это действительно полезно. Оба варианта, которые вы предоставили, работают нормально. мне нужно прояснить одну вещь, когда я пишу явный источник сообщения, я написал это в основном классе Spring boot, это правильно или я должен написать это по-другому?

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

3. Большое вам спасибо за помощь, теперь я понял, чего я действительно хочу. Заранее еще раз спасибо.