如何在 Thymeleaf 和 Spring Boot 中显示消息?
How to display messages in Thymeleaf and Spring Boot?
我创建了一个 Spring 使用 Thymeleaf 作为模板引擎的启动 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.:
在 'server side' 上,我可以使用 MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
获取消息。
消息源相对于类路径:
messageSource.setBasename(" classpath:i18n/messages");
这是我为 thymeleaf 和 spring = http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html
参考的教程
是否存在允许回退的文件 messages.properties
(没有 _de
)?它有效吗?您的浏览器是否设置为区域设置 DE_de
?
我解决 i18n 消息传递的方法是像您一样定义 MessagesSource
bean。此外,我不得不覆盖 WebMvcConfigurerAdapter
.
的 getValidator()
方法
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource( messageSource() );
return validator;
}
在此之后,它对我有用。
因为我使用的是Spring引导,MessageSource
配置了MessageSourceAutoConfiguration
。这些设置可以在 application.properties
文件中轻松更改。就我而言,我必须将以下内容添加到此文件中:
spring.messages.basename=i18n/messages
并将其添加到您的 application.properties
文件
#messages
spring.messages.basename=i18n/messages
并将文件存储在上面指定的正确文件夹中。
你不需要messageSource
bean
我创建了一个 Spring 使用 Thymeleaf 作为模板引擎的启动 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.:
在 'server side' 上,我可以使用 MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
获取消息。
消息源相对于类路径:
messageSource.setBasename(" classpath:i18n/messages");
这是我为 thymeleaf 和 spring = http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html
参考的教程是否存在允许回退的文件 messages.properties
(没有 _de
)?它有效吗?您的浏览器是否设置为区域设置 DE_de
?
我解决 i18n 消息传递的方法是像您一样定义 MessagesSource
bean。此外,我不得不覆盖 WebMvcConfigurerAdapter
.
getValidator()
方法
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource( messageSource() );
return validator;
}
在此之后,它对我有用。
因为我使用的是Spring引导,MessageSource
配置了MessageSourceAutoConfiguration
。这些设置可以在 application.properties
文件中轻松更改。就我而言,我必须将以下内容添加到此文件中:
spring.messages.basename=i18n/messages
并将其添加到您的 application.properties
文件
#messages
spring.messages.basename=i18n/messages
并将文件存储在上面指定的正确文件夹中。
你不需要messageSource
bean