【问题标题】:Spring 4 Framework Internationalization not identify message from resource properties file with thymeleafSpring 4 Framework Internationalization 无法使用 thymeleaf 识别来自资源属性文件的消息
【发布时间】:2014-03-09 10:14:11
【问题描述】:

使用新的spring版本,用thymeleaf,不是我的专长,用gradle, 我尝试了很多方法更改基本名称的位置文件和配置,但仍然收到 ??welcome.message_**??在模板结果上。

@EnableAutoConfiguration
@Configuration
@ComponentScan
public class Application {

[...]

@Bean
public ReloadableResourceBundleMessageSource resourceBundleMessageSource(){
        ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
        String[] resources= {"/WEB-INF/locale/messages", "WEB-INF/locale/messages", "locale/messages", "i18n", "locale"};
        messageSource.setBasenames(resources);
        messageSource.setFallbackToSystemLocale(true);
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

@Bean 
public LocaleChangeInterceptor localeChangeInterceptor(){
    LocaleChangeInterceptor localeChangeInterceptor=new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("lang");
    return localeChangeInterceptor;
}

@Bean
public SessionLocaleResolver sessionLocaleResolver(){
    SessionLocaleResolver localeResolver=new SessionLocaleResolver();
    localeResolver.setDefaultLocale(new Locale("pt","BR"));
    return localeResolver;
}

public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}

模板:

<h1 th:text="#{welcome.message}">Welcome!</h1>

src/java/webapp/WEB-INF/local/messages.propertiessrc/java/webapp/WEB-INF/local/messages_pt_BR.properties 上有 2 个属性

github 项目:https://github.com/brunoguerra/springtutorial/tree/master/web-scure-jpa

感谢您的任何想法

【问题讨论】:

    标签: java spring-mvc internationalization thymeleaf


    【解决方案1】:

    四处走走后,我在github 上找到了来自 spring-projects 的样本。解决方案非常简单,只需在 MVC 配置器上定义 public MessageSource messageSource(),而不是在应用程序配置器上定义 public ReloadableResourceBundleMessageSource resourceBundleMessageSource()

    @Configuration
    @EnableWebMvc
    public class MvcConfig extends WebMvcConfigurerAdapter {
    
    [...]
    
    @Bean    
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/WEB-INF/messages/messages");
        return messageSource;
    }
    

    【讨论】:

      【解决方案2】:

      bean 名称应该是 messageSource 我们也可以这样做

      @Bean(name ="messageSource")
      public MessageSource anyName() {} 
      

      或者

      public MessageSource messageSource() {}
      

      【讨论】:

        猜你喜欢
        • 2016-09-25
        • 2015-02-21
        • 1970-01-01
        • 2017-03-13
        • 1970-01-01
        • 1970-01-01
        • 2019-02-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多