import java.util.Locale;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
@Configuration
public class Config {
@Bean
public LocaleResolver localeResolver() {
final CookieLocaleResolver ret = new CookieLocaleResolver();
ret.setDefaultLocale(new Locale("en_US"));
return ret;
}
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource ret = new ReloadableResourceBundleMessageSource();
ret.setBasename("classpath:lang");
ret.setDefaultEncoding("UTF-8");
return ret;
}
@Bean
public HandlerMapping handlerMapping() {
final LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
interceptor.setParamName("language");
final DefaultAnnotationHandlerMapping ret = new DefaultAnnotationHandlerMapping();
ret.setInterceptors(new Object[] { interceptor });
return ret;
}
}
以上是我的注释配置。我已经基本翻译了this教程的XML。基于Spring MVC LocaleChangeInterceptor注解不起作用
奇怪的是,当我去...?language=fr
时它不起作用。
但是,以下不工作(在app-servlet.xml
)(注意这里它使用locale
):
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale" />
</bean>
</mvc:interceptors>
需要注意的另一个重要的事情是,当我把上面的方法断点,所有三个的他们,每个断点都会断裂,这意味着“某人”正在阅读这些值。
那么,为什么我的基于注释的拦截器不工作?
谢谢 - 豆的名字是诀窍! – Henrik 2013-10-20 18:42:26
是的,你是对的。 bean的名字是解决方案@Bean(name =“localeResolver”) – 2015-05-22 04:12:29