我刚开始使用Spring MVC,在向我的应用程序添加多语言时遇到了一些问题。
我不使用xml配置。我有一个@Configuration类
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.springexamples.basic.controller")
public class BasicServletConfig extends BaseConfig {
@Bean
ViewResolver viewResolver() {
return getViewResolver("views/basic/", ".jsp");
}
@Bean
MessageSource messageSource() {
return getMessageSource("/messages/messages");
}
@Bean
LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
interceptor.setParamName("lang");
return interceptor;
}
@Bean
LocaleResolver localeResolver() {
return new SessionLocaleResolver();
}
@Bean
HandlerMapping handlerMapping() {
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setInterceptors(new HandlerInterceptor[] { localeChangeInterceptor() });
return mapping;
}
}当我测试应用程序时,我总是看到默认语言(西班牙语)。我发送了带有参数'lang=en‘或'lang=EN’的请求,但我仍然看到它使用默认语言。
有人知道解决方案吗?
谢谢,
发布于 2012-04-17 22:46:49
我不确定以这种方式声明的HandlerMapping将如何处理@EnableWebMvc。使用WebMvcConfigurer配置@EnableWebMvc截取程序是一种更常用的方法
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.springexamples.basic.controller")
public class BasicServletConfig extends BaseConfig implements WebMvcConfigurer {
...
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
...
} https://stackoverflow.com/questions/10192877
复制相似问题