gpt4 book ai didi

spring - spring 3.1.2 中的国际化使用注释不起作用

转载 作者:行者123 更新时间:2023-12-02 05:36:26 24 4
gpt4 key购买 nike

我正在使用 spring 3.1.2 MVC。我正在尝试通过注释配置 Web 应用程序

这里我想实现国际化,因为我正在使用 LocaleChangeInterceptorReloadableResourceBundleMessageSourceSessionLocaleResolver 类。这是我的配置类:

@Configuration
@EnableWebMvc
public class MyAppConfig extends WebMvcConfigurerAdapter{

@Bean
public ReloadableResourceBundleMessageSource resourceBundleMessageSource(){
ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
String[] resources= {"classpath:labels","classpath:message"};
messageSource.setBasenames(resources);
return messageSource;
}

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

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

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

}

但这不起作用,它显示了

的默认文本
<spring:message code="login.user.password" text="Password" /> 

作为“密码”。

请帮帮我。当我在 applicationContext.xml 中进行以下配置时,它工作正常。

 <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">


<property name="basenames">
<list>
<value>classpath:message</value>
<value>classpath:labels</value>
</list>
</property>
<property name="defaultEncoding" value="ISO-8859-1" />
</bean>

<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" p:paramName="locale"/>
</mvc:interceptors>


<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="da_DK" />
</bean>

请帮我解决这个问题。

最佳答案

messageSource 的 bean 名称必须是“messageSource”,使用@Configuration 可以将其命名为 resourceBundleMessageSource。将其更改为:

    @Bean
public ReloadableResourceBundleMessageSource messageSource(){
ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
String[] resources= {"classpath:labels","classpath:message"};
messageSource.setBasenames(resources);
return messageSource;
}

关于spring - spring 3.1.2 中的国际化使用注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com