Spring MVC 国际化备忘录
By:Roy.LiuLast updated:2013-07-08
用Spring mvc 做国际化,其实重点的几项就是配置文件而已。xml配置与多语言的properties的配置. 但要想动态切换语言,所有页面必须经过 spring controller 处理,如果只接在jsp 页面,是不生效的。简单的配置文件如下:
一,这是需要在spring-mvc 里面配置的东西:
另外在src 下面建立 welcome_en.properties,welcome_zh_CN.properties 文件,里面分别输入各自的内容。
二,建立controller 层。这只是一个简单的测试,不适合在项目中使用,适合测试用.
三,页面代码:
代码下载,略去了jar包,为了大家看配置更容易,可以下载测试工程。下载spring mvc 国际化源码
fileupload
大家可以看到,如果直接是在jsp 页面里去动态切换的话,结果是不生效的,比如地址为:
http://localhost:8089/spring_i18n/index.jsp?language=en
而采用spring mvc controller 处理过的是生效的,比如:
http://localhost:8089/spring_i18n/i18n/test?language=en
这种方式才可以动态切换语言。
一,这是需要在spring-mvc 里面配置的东西:
<bean id= ""messageSource"" class = ""org.springframework.context.support.ReloadableResourceBundleMessageSource"" > <property name= ""basename"" value= ""classpath:welcome"" > <property name= ""defaultEncoding"" value= ""UTF-8"/" > </property></property></bean> <bean id= ""localeChangeInterceptor"" class = ""org.springframework.web.servlet.i18n.LocaleChangeInterceptor"" > <property name= ""paramName"" value= ""language"" > </property></bean> <bean id= ""localeResolver"" class = ""org.springframework.web.servlet.i18n.CookieLocaleResolver"" > <property name= ""defaultLocale"" value= ""zh_CN"/" > </property></bean> <bean id= ""handlerMapping"" class = ""org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"" > <property name= ""interceptors"" > <ref bean= ""localeChangeInterceptor"" > </ref></property> </bean> <mvc:interceptors> <bean class = ""org.springframework.web.servlet.i18n.LocaleChangeInterceptor"" > <property name= ""paramName"" value= ""language"" > </property></bean> </mvc:interceptors> |
另外在src 下面建立 welcome_en.properties,welcome_zh_CN.properties 文件,里面分别输入各自的内容。
二,建立controller 层。这只是一个简单的测试,不适合在项目中使用,适合测试用.
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping ( "/i18n" ) public class WelcomeController { @RequestMapping ( "/test" ) protected ModelAndView welcome(HttpServletRequest request,HttpServletResponse response) throws Exception { ModelAndView model = new ModelAndView( "WelcomePage" ); return model; } } |
三,页面代码:
<%@ page contentType= "text/html;charset=UTF-8" %> <%@ taglib prefix= "spring" uri= "http://www.springframework.org/tags" %> <h1>Spring MVC internationalization example</h1> Language : <a href= ""?language=en"" >English</a>| <a href= ""?language=zh_CN"" >Chinese</a> <h3> welcome.springmvc : <spring:message code= ""welcome.springmvc"" text= ""default" text"= "" > </spring:message></h3> Current Locale : ${pageContext.response.locale} |
代码下载,略去了jar包,为了大家看配置更容易,可以下载测试工程。下载spring mvc 国际化源码
fileupload
大家可以看到,如果直接是在jsp 页面里去动态切换的话,结果是不生效的,比如地址为:
http://localhost:8089/spring_i18n/index.jsp?language=en
而采用spring mvc controller 处理过的是生效的,比如:
http://localhost:8089/spring_i18n/i18n/test?language=en
这种方式才可以动态切换语言。
From:一号门
Previous:关于spring data jpa 在jboss 下配置,运行的备忘
COMMENTS