SpringMVC 國際化問題

一、首先在src文件下添加3個properties文件html

  a、message.properties
前端

1 message.username=UserName
2 message.password=Password

  b、message_en.propertiesjava

1 message.username=UserName
2 message.password=Password

  c、message_zh.propertiesspring

1 message.username=\u7528\u6237\u540D
2 message.password=\u5BC6\u7801

 

二、配置spring-mvc.xml文件spring-mvc

1 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
2     <!-- 指定文件基名 -->
3      <property name="basename" value="message"/>
4      <!-- 當沒有找到資源文件時,用這基名文件 -->
5      <property name="useCodeAsDefaultMessage" value="true" />    
6  </bean>

  這裏配置屬性userCodeAsDefaultMessage=true。意思當在其餘語言區域裏,沒有找到對應的國際化文件。好比日語區、韓語區等。默認使用message.properties文件。當爲false時,顯示有問題。mvc

 

三、配置Controllerapp

 1 @Controller
 2 public class UserController {
 3 
 4     @RequestMapping("/updateUser")
 5     public String update(){
 6 
 7         return "success";
 8     }
 9     
10 }

 

四、Jsp頁面jsp

  要作jsp頁面中使用國際化信息。須要添加一個fmt標籤。該標籤在JSTL標籤表中。添加方式url

1 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

  index.jspspa

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 3 
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6   <head>
 7     <title>My JSP 'hello.jsp' starting page</title>
 8   </head>
 9   
10   <body>
11     
12     <fmt:message key="message.username"/><input type="text" name="username" /><br/>
13     <fmt:message key="message.password"/><input type="text" name="password" /><br/>
14   </body>
15 </html>

 

  hello.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 3 
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6   <head>
 7     <title>My JSP 'hello.jsp' starting page</title>
 8   </head>
 9   
10   <body>
11     
12     <fmt:message key="message.username"/><input type="text" name="username" /><br/>
13     <fmt:message key="message.password"/><input type="text" name="password" /><br/>
14   </body>
15 </html>

 

  咱們經過url訪問success.jsp頁面。

  訪問地址:http://localhost:8080/springmvc-1/updateUser

 

  咱們訪問index.jsp頁面http://localhost:8080/springmvc-1

  結果出現這樣的結果

 

爲何JSP頁面都是同樣的。爲何結果不同呢?

  緣由是index.jsp頁面能夠直接被訪問到,而success.jsp頁面在WEB-INF下面,不可以直接訪問,須要經過servlet轉發的方式纔夠訪問。在SpringMVC中,DispatcherServlet前端控制器,攔截了全部請求,對http://localhost:8080/springmvc-1/updateUser訪問。交個SpringMVC去處理。而在spring-mvc.xml配置了ResourceBundleMessageSource,因此在success頁面中可使用國際化信息。

   綜上所述:要使用基於頁面的國際化信息,須要使用轉發的方式才能生效。

相關文章
相關標籤/搜索