SpringMVC即将国际化

1.SpringMVC 国际化配置

还是先来说说用法,再来说源码,这样大家不容易犯迷糊。我们先说在 SSM 中如何处理国际化问题。

首先国际化我们可能有两种需求:

  • 在页面渲染时实现国际化(这个借助于 Spring 标签实现)
  • 在接口中获取国际化匹配后的消息

大致上就是上面这两种场景。接下来松哥通过一个简单的用法来和大家演示下具体玩法。

首先我们在项目的 resources 目录下新建语言文件,language_en_US.properties 和 language_zh-CN.properties,如下图:

内容分别如下:

language_en_US.properties:


  1. login.username=Username 
  2. login.password=Password 

language_zh-CN.properties:


  1. login.username=用户名 
  2. login.password=用户密码 

这两个分别对应英中文环境。配置文件写好之后,还需要在 SpringMVC 容器中提供一个 ResourceBundleMessageSource 实例去加载这两个实例,如下:


  1. <bean class="org.springframework.context.support.ResourceBundleMessageSource" id="messageSource"
  2.     <property name="basename" value="language"/> 
  3.     <property name="defaultEncoding" value="UTF-8"/> 
  4. </bean> 

 

 

这里配置了文件名 language 和默认的编码格式。

接下来我们新建一个 login.jsp 文件,如下:


  1. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  3. <html> 
  4. <head> 
  5.     <title>Title</title> 
  6. </head> 
  7. <body> 
  8. <spring:message code="login.username"/> <input type="text"> <br> 
  9. <spring:message code="login.password"/> <input type="text"> <br> 
  10. </body> 
  11. </html> 

在这个文件中,我们通过 spring:message 标签来引用变量,该标签会根据当前的实际情况,选择合适的语言文件。

接下来我们为 login.jsp 提供一个控制器:


  1. @Controller 
  2. public class LoginController { 
  3.     @Autowired 
  4.     MessageSource messageSource; 
  5.     @GetMapping("/login"
  6.     public String login() { 
  7.         String username = messageSource.getMessage("login.username"null, LocaleContextHolder.getLocale()); 
  8.         String password = messageSource.getMessage("login.password"null, LocaleContextHolder.getLocale()); 
  9.         System.out.println("username = " + username); 
  10.         System.out.println("password = " + password); 
  11.         return "login"
  12.     } 

控制器中直接返回 login 视图即可。

另外我这还注入了 MessageSource 对象,主要是为了向大家展示如何在处理器中获取国际化后的语言文字。

配置完成后,启动项目进行测试。

默认情况下,系统是根据请求头的中 Accept-Language 字段来判断当前的语言环境的,该这个字段由浏览器自动发送,我们这里为了测试方便,可以使用 POSTMAN 进行测试,然后手动设置 Accept_Language 字段。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章