本文主要是介绍SpringI18N - 设置和获取Locale,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LocaleResolver
--抽象Locale获取策略的接口
LocaleChangeInterceptor
--通过参数改变Locale值
例子:SessionLocaleResolver和LocaleChangeInterceptor的结合使用
ApplicationContext-i18n.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><context:component-scan base-package="com.siyuan.study.springi18n" /><mvc:interceptors><bean id="localeChangeInterceptor"class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /></mvc:interceptors><bean id="localeResolver"class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /><bean id="jspViewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/view/" /><property name="suffix" value=".jsp" /></bean></beans>
LocaleController.java
package com.siyuan.study.springi18n;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
@RequestMapping("/locale")
public class LocaleController {@RequestMapping("")public String showLocale() {return "locale";}}
locale.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head><%=response.getLocale() %> <body> </body> </html>
启动后测试:
http://localhost:9000/springi18n/locale
zh_CN
http://localhost:9000/springi18n/locale?locale=en_US
en_US
http://localhost:9000/springi18n/locale
en_US
为什么可以通过response获取Locale
DispatcherServlet.java
protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {// Determine locale for request and apply it to the response.Locale locale = this.localeResolver.resolveLocale(request);response.setLocale(locale);
......
}
这篇关于SpringI18N - 设置和获取Locale的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!