如何在Thymeleaf和Spring Boot中显示消息?

时间:2015-04-09 07:17:45

标签: spring spring-mvc spring-boot thymeleaf

我创建了一个使用Thymeleaf作为模板引擎的Spring Boot Web应用程序。我将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>

我错过了什么?我是否必须配置任何其他bean?

P.S:

在服务器端&#39;我可以使用MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)获取消息。

5 个答案:

答案 0 :(得分:28)

因为我使用的是Spring Boot,MessageSource配置了MessageSourceAutoConfiguration。可以在application.properties文件中轻松更改这些设置。在我的情况下,我不得不将以下内容添加到此文件中:

spring.messages.basename=i18n/messages

答案 1 :(得分:4)

并将其添加到您的application.properties文件

#messages
spring.messages.basename=i18n/messages

并将文件存储在上面指定的正确文件夹中。

您不需要messageSource bean

答案 2 :(得分:3)

我解决i18n消息传递的方式是像你一样定义MessagesSource bean。另外,我必须覆盖getValidator()的{​​{1}}方法。

WebMvcConfigurerAdapter

在此之后,它对我有用。

答案 3 :(得分:1)

是否存在允许回退的文件messages.properties(无_de)?它有用吗?您的浏览器是否设置为区域设置DE_de

答案 4 :(得分:0)

消息源与classpath相关:

messageSource.setBasename("  classpath:i18n/messages");

这是我为thymeleaf和spring = http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html

引用的教程