使用CookieLocaleResolver进行Spring本地化不起作用

时间:2016-05-20 09:20:32

标签: spring spring-mvc localization

我已使用here给出了弹簧本地化。

的web.xml

<!-- Loading Message Resource Bundle -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en" />
    <property name="cookieName" value="stcLocaleCookie" />
    <property name="cookieMaxAge" value="3600" />
</bean>

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>
</mvc:interceptors>

根context.xml中     

@

并且spring-servlet.xml具有hibernate配置bean propertyConfigurer,dataSource,sessionFactory,transactionManager。

现在,当我加载页面时,它正在选择本地化文本en,但是当我尝试使用?lang = ar更改URL时,它无效。但是,如果我明确地将Accept-Language标头设置为“ar”它可以工作,我已经尝试使用邮递员。如何使用url更改区域设置。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此

更改root.xml吗?
<!-- Loading Message Resource Bundle -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en" />
    <property name="cookieName" value="stcLocaleCookie" />
    <property name="cookieMaxAge" value="3600" />
</bean>

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <bean id="localeChangeInterceptor"
            class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <property name="paramName" value="lang" />
        </bean>
    </mvc:interceptor>
</mvc:interceptors>

让我知道这是否有帮助

您可以查看有关配置拦截器的spring文档。

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-config-interceptors

您可以将HandlerInterceptors或WebRequestInterceptors配置为应用于所有传入请求或限制为特定URL路径模式。

在Java中注册拦截器的示例:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new LocaleInterceptor());
    registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");
    registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*");
 }

}

在XML中使用元素:

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    <mvc:interceptor>
        <mapping path="/**"/>
        <exclude-mapping path="/admin/**"/>
        <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor" />
    </mvc:interceptor>
    <mvc:interceptor>
        <mapping path="/secure/*"/>
        <bean class="org.example.SecurityInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>