How to display messages in Thymeleaf and Spring Boot?

stevecross picture stevecross · Apr 9, 2015 · Viewed 28.2k times · Source

I created a Spring Boot web application that uses Thymeleaf as the template engine. I configured the MessageSource to look for messages in a subfolder:

@Bean
public MessageSource messageSource() {
    final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();

    messageSource.setBasename("i18n/messages");
    messageSource.setFallbackToSystemLocale(false);
    messageSource.setCacheSeconds(0);

    return messageSource;
}

In this folder I created the file messages_de.properties with the content ticket.type.BUG=Fehler. In my template I try to display the text like this:

<p th:text="#{ticket.type.BUG}">BUG</p>

But when the page is rendered, I get the following:

<p>??ticket.type.BUG_de_DE??</p>

What am I missing? Do I have to configure any additional beans?

P.S.:

On the 'server side' I am able to obtain the message using MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY).

Answer

stevecross picture stevecross · Apr 9, 2015

Because I am using Spring Boot, the MessageSource is configured with a MessageSourceAutoConfiguration. These settings can be easily changed in the application.properties file. In my case I had to add the following to this file:

spring.messages.basename=i18n/messages