参照 http://viralpatel.net/blogs/spring-3-mvc-internationalization-i18n-localization-tutorial-example/ 配置spring 国际化:

<!-- 配置语言拦截器,语言选择参数名称 lang -->

 <bean id="localeChangeInterceptor">

<property name="paramName" value="lang" /> </bean>

<!-- 本地默认语言环境 -->

<bean id="localeResolver"

class="org.springframework.web.servlet.i18n.CookieLocaleResolver">

 <property name="defaultLocale" value="zh_CN" />

</bean>

<!-- 国际化配置 结束 -->

 <bean id="handlerMapping">

<property name="interceptors"> <ref bean="localeChangeInterceptor" />国际化选择拦截器

</property> <property name="order"> <value>1</value> </property> </bean>  

<mvc:annotation-driven>

<mvc:message-converters register-defaults="true">

<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->

<bean>

<constructor-arg value="UTF-8" />

</bean>

<!-- 将Jackson2HttpMessageConverter的默认格式化输出设为true -->

<bean

class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

<property name="prettyPrint" value="true" />

</bean>

</mvc:message-converters>

</mvc:annotation-driven>

由于 使用了<mvc:annotation-driven>,会覆盖xml中配置的LocaleChangeInterceptor,导致无法选择语言环境。 解决方法: 增加配置

<!-- 由于<mvc:annotation-driven>会覆盖 LocaleChangeInterceptor配置--> <mvc:interceptors>

<bean>

<property name="paramName" value="lang" />

</bean>

</mvc:interceptors> 

去掉原 LocaleChangeInterceptor的配置。 URL 后加?lang=en  ,正确切换到en环境。问题解决。