Java Spring MVC默认的语言环境和语言环境更改不会';行不通

Java Spring MVC默认的语言环境和语言环境更改不会';行不通,java,spring,jsp,maven,spring-mvc,Java,Spring,Jsp,Maven,Spring Mvc,我是一名新的Spring开发人员,尝试开发支持两种语言的示例web应用程序。我想将默认语言环境设置为阿拉伯语,并在用户单击JSP页面中所需语言时更改语言环境 这是我的mvc-dispatcher-servlet.xml <!-- Enables the Spring MVC @Controller programming model --> <mvc:annotation-driven/> <!-- Handles HTTP GET requests for /r

我是一名新的Spring开发人员,尝试开发支持两种语言的示例web应用程序。我想将默认语言环境设置为阿拉伯语,并在用户单击JSP页面中所需语言时更改语言环境

这是我的mvc-dispatcher-servlet.xml

<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven/>

<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
    up static resources in the ${webappRoot}/resources directory -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<context:component-scan base-package="com.benchmark.ushers.presentation.controller"/>

<bean id="internalResourceResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<!-- resource bundle  configuration-->
<bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:locale/messages" />
    <property name="fallbackToSystemLocale" value="false"/>
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

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

<mvc:interceptors>  
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
          <property name="paramName" value="lang"></property>
    </bean>
</mvc:interceptors>
<!-- end of resource bundle  configuration-->

我的JSP页面如下所示


引座员
朗:|
欢迎光临。springmvc:
你好:

我想您需要
DefaultAnnotationHandlerMapping
到@RequestMapping的映射,它将检查任何区域设置更改请求。另见



阅读此内容以避免将其与问题中的上述配置混用。问题在于请求的页面在web.xml文件中设置为欢迎页面,因此它在没有任何拦截器的情况下执行

在web.xml中对该部分进行注释后,一切都正常


在我的例子中,我使用的是java配置版本,直到我添加了“localeResolver”bean名称,它才起作用。下面列出了我创建的国际化bean。您可以通过更改URL:/some页面中的lang参数来检查它的工作情况。do?lang=ro

public class WebMvcConfiguration extends WebMvcConfigurerAdapter {

...

@Bean(name="localeResolver")
public LocaleContextResolver getLocaleContextResolver() {
    CookieLocaleResolver localeResolver = new CookieLocaleResolver();
    localeResolver.setDefaultLocale(Locale.US);
    return localeResolver;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(getLocaleChangeInterceptor());
}

@Bean
public LocaleChangeInterceptor getLocaleChangeInterceptor() {
    final LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
    interceptor.setParamName("lang");
    return interceptor;
}

我以前尝试过,但由于此声明“无效”。
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {

...

@Bean(name="localeResolver")
public LocaleContextResolver getLocaleContextResolver() {
    CookieLocaleResolver localeResolver = new CookieLocaleResolver();
    localeResolver.setDefaultLocale(Locale.US);
    return localeResolver;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(getLocaleChangeInterceptor());
}

@Bean
public LocaleChangeInterceptor getLocaleChangeInterceptor() {
    final LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
    interceptor.setParamName("lang");
    return interceptor;
}