5.1 Spring MVC国际化的相关知识
5.1 Spring MVC国际化的相关知识
5.1.1 messageSource接口
在Spring MVC中,不直接使用java.util.ResourceBundle,而是使用名为messageSource的Bean告诉Spring MVC国际化的属性文件保存在哪里。配置信息代码如下所示:
1 | <!-- 国际化配置 --> |
上面的配置使用了ResourceBundleMessageSource类作为messageSourceBean的实现。basenames属性用来指定国际化的属性文件名称。如果项目中只有一组属性文件,则可以使用baseman来指定国际化的属性文件名称,实例代码如下
1 | <!-- 国际化 p:basenames属性用于指定国际化资源文件名 --> |
5.1.2 localResolver接口
如何知道用户使用的语言
为用户选择语言区域时,最常用的方法是通过读取用户浏览器的accept-language标题值, accept- language标题提供了关于用户浏览器语言的信息。选择语言区域的其他方法还包括读取 HttpSession或者 Cookie。
语言区域解析器
在Spring MVC中选择语言区域,可以使用语言区域解析器。Spring MVC提供了一个语言区域解析器接口LocaleResolver,该接口的常用实现类都在org.springframework.web.servlet.i18n包下面,包括:
AcceptHeaderLocaleResolverSessionLocaleResolverCookieLocaleResolver
其中,AcceptHeaderLocaleResolver是默认的,也是最容易使用的语言区域解析器。使用它,Spring MVC会读取浏览器的accept-language标题,来确定使用哪个语言区域。默认的AcceptHeaderLocaleResolver可以不用显式配置,而Sessionlocaleresolver和Cookielocale-Resolver需要手动显式配置
5.1.3 message标签
在Spring MVC中显示本地化消息通常使用Spring的message标签。使用message标签需要在JSP页面最前面使用taglib指令导入Spring的标签库,如下所示:
1 | <% prefix="spring" uri="http://www.springframework.org/tags"%> |
message标签的属性如表5.1所示,所有属性都是可选的
| 属性 | 描述 |
|---|---|
arguments |
标签的参数,可以是一个字符串、数组或对象 |
argumentSeparator |
用来分隔该标签参数的字符 |
code |
获取消息的key |
htmlEscape |
boolean值,表示被渲染的值是否应该进行HTM转义 |
javaScriptEscape |
boolean值,表示被渲染的值是否应该进行 JavaScript转义 |
message |
MessageSourceResolvable参数 |
scope |
保存var属性中定义的变量的作用域 |
text |
如果code属性不存在,所显示的默认文本 |
var |
用于保存消息的变量 |