前言
首先在没有提供自定义LocaleResolver
的前提下两者结合使用并不会出现中文乱码,反之则可能出现。对于国际化的语言设置,Spring Boot
默认使用AcceptHeaderLocaleResolver
获取用户指定的语言,它是从请求的Header
中获取Accept-Language
的值决定要使用的Locale
,而在浏览器中每次请求的这个参数值默认使用的是系统的语言区域,这就意味着如果我们要使用英文环境,就不得不每次都在请求时想办法将这个参数值设为类似于en_US
。显然这样过于繁琐,一种更好的方法是在URL
上使用查询参数设置语言,并且我希望对于我设置的语言能够被缓存起来,在较长的一段时间内只要不变更它都应该是生效的。
从Accept-Language到查询参数
直接在请求URL
后面携带参数带来的便利是显而易见的:http://localhost:8080/index?lang=en_US
,因为你完全不可能直接通过浏览器设置请求头。要完成从请求头到查询参数的转换很简单,可继承WebMvcConfigurationSupport
并覆盖addInterceptors
方法: