Thymeleaf没有找到消息来源

时间:2014-06-01 14:15:31

标签: spring configuration thymeleaf

我实际上对我的Thymeleaf配置的一部分感到困惑。

我有一个位于classpath:/messages/web.properties的属性文件。在我的配置中,定义了以下内容。

@Bean
public MessageSource messageSource() {
    final ResourceBundleMessageSource messageSource;

    messageSource = new ResourceBundleMessageSource();
    messageSource.setDefaultEncoding("UTF-8");
    messageSource.setBasename("messages/web");

    return messageSource;
}

如果我使用此配置运行我的应用程序一切正常。来自属性文件的消息被注入Thymeleaf模板(如预期的那样)。

但是,如果我更改创建我的消息源的方法的名称,请重新启动我的应用程序并请求相同的页面...然后找不到我的web.properties文件中的消息。

@Bean
public MessageSource webMessageSource() {
    [...]
}

为什么消息资源的bean名称(=方法名称)对我的应用程序有影响?

为什么Thymeleaf模板引擎无法找到消息源webMessageSource

1 个答案:

答案 0 :(得分:5)

在Thymeleaf源代码中进行了一些挖掘之后,我发现在SpringTemplateEngine课程中,Javadoc明确指出:

  

它还将{@link SpringMessageResolver}配置为消息   解析器,并实现{@link MessageSourceAware}接口   为了让Spring自动设置{@link MessageSource}   在应用程序中使用(bean需要有id   "为messageSource&#34)。如果需要这个Spring标准设置   重写,{@ link #setTemplateEngineMessageSource(MessageSource)}   可以使用。

重要的部分是 bean需要有id" messageSource"

如@ShinichiKai所述,Spring文档的this部分提到Spring中的MessageSource bean的名称必须是messageSource