Spring语言环境解析器 - url中的当前语言环境

时间:2012-05-19 08:35:12

标签: spring-mvc localization locale interceptor

我使用这个简单的配置

    <beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <beans:property name="basename" value="classpath:localization/messages" />
        <beans:property name="defaultEncoding" value="UTF-8" />
    </beans:bean>

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

    <beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <beans:property name="defaultLocale" value="en" />
        <beans:property name="cookieMaxAge" value="100000" />
    </beans:bean>

很好但是如果有人会向其他人发送网址怎么办?这仅适用于客户端浏览器,如果用户更改了本地化,则会设置cookie。我见过很多网站,他们在网址中的第一个斜线后进行了本地化(例如nette.org/en/about)。当有人发送此链接时,它将根据网址解析本地化。在spring框架中是否存在任何简单的解决方案?不知何故在url中映射这个地方?

1 个答案:

答案 0 :(得分:-1)

而不是 CookieLocaleResolver 使用 SessionLocaleResolver

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

我认为这可以解决您的问题。

干杯。