Spring 4 框架国际化不识别来自百里香叶的资源属性文件中的消息



使用新的春季版本,用百里香叶,不是我的专长,用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

感谢您的任何想法

四处走动后,我在github上找到了春季项目的样本。解决方案非常简单,只需在 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;
}

bean name 应该是 messageSource我们也可以做到

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

public MessageSource messageSource() {}

最新更新