默认情况下,SpringMVC 根据 Accept-Language 参数判断客户端的本地化类型。
当接受到请求时,SpringMVC 会在上下文中查找一个本地化解析器(LocalResolver),找到后使用它获取请求所对应的本地化类型信息。
SpringMVC 还允许装配一个动态更改本地化类型的拦截器,这样通过指定一个请求参数就可以控制单个请求的本地化类型。
本地化解析器和本地化拦截器
• AcceptHeaderLocaleResolver:根据 HTTP 请求头的 Accept-Language 参数确定本地化类型,如果没有显式定义本地化解析器, SpringMVC 使用该解析器。
• CookieLocaleResolver:根据指定的 Cookie 值确定本地化类型
• SessionLocaleResolver:根据 Session 中特定的属性确定本地化类型
• LocaleChangeInterceptor:从请求参数中获取本次请求对应的本地化类型
。
我们也可以通过超链接切换 locale,而不依赖于浏览器的语言设置,通过配置 SessionLocaleResolver 和 LocaleChangeInterceptor 来实现
eg:
jsp页面:
<br><br>
<a href="i18n?locale=zh_CN">中文</a>
<br><br>
<a href="i18n?locale=en_US">英文</a>
SpringMVC页面:
<!-- 配置 SessionLocaleResolver -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
<!-- 配置 LocaleChanceInterceptor -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>
原理:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于