Spring MVC 前後臺國際化設置

使用Spring MVC 配置國際化,用戶可以選擇語言,前臺後臺獲取國際化資源的方法:

config :

spring-mvc.xml

<!-- 國際化 -->

	<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
	    <!-- 國際化信息所在的文件名 -->                     
	    <property name="basename" value="messages" />   
	    <!-- 如果在國際化資源文件中找不到對應代碼的信息,就用這個代碼作爲名稱  -->               
	    <property name="useCodeAsDefaultMessage" value="true" />           
	</bean>
	

	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" >
		<property name="defaultLocale" value="en" />
	</bean>
	

jsp:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:message code="key" />

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

後臺方式:

在方法裏面: 

RequestContext context = new RequestContext(request);
String message = context.getMessage("key");

或者使用

//使用 LocaleContextHolder.getLocale() 獲取當前語言

//使用類 繼承 ApplicationContextAware 接口,獲取到 ApplicationContext 對象
//獲取國際化資源文件對象
Map<String, MessageSource> map =ApplicationContext.getBeansOfType(MessageSource.class) 
//可以獲取對應的
String value = MessageSource.getMessage(code,  args, LocaleContextHolder.getLocale()); 

用戶修改 語言(以下兩種均可):

1.配置controller,

在對應的方法裏面:

首先 構造一個 Locale 對象,使用 Locale裏面的屬性,或者 new Locale(String language, String country),

然後使用:

RequestContext context = new RequestContext(request);
context.changeLocale(Locale locale);

//或者 
LocaleContextHolder.setLocale(Locale locale);

2.配置

<bean id="changeLocale" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
  <property name="interceptors">
   <list>
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
   </list>
  </property>
 </bean>

然後 訪問controller 的路徑爲:

<a href="/sys/test?locale=zh_CN">中文</a>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章