spring mvc 国际化

使用CookieLocaleResolver实现国际化的步骤:
1.注册 messageSource,localeResolver 两个bean
2.调用localeResolver.setLocale()可改变 Locale
3.RequestContext.getMessage()ApplicationContext.getMessage()可以获取国际化信息
4.jsp页面引入spring标签后,也可直接获取国际化信息

spring 配置文件:

     <!-- 配置国际化资源文件路径 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="MessageBundle" /><!-- MessageBundle_en_US.properties,MessageBundle_zh_CN.properties -->
<property name="defaultEncoding" value="UTF-8" />
</bean>
<!-- 注册spring mvc的cookie locale,其他还有SessionLocaleResolver等 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieName" value="language" />
<property name="cookieMaxAge" value="604800" /><!-- cookieMaxAge属性表示这个Cookie应该持续多少秒,-1表示这个Cookie在浏览器关闭之后就失效 -->
<property name="defaultLocale" value="zh_CN" />
</bean>

Controller中配置:

 @Controller
public class LoginController {
@Autowired
private LocaleResolver localeResolver;
@Autowired
private ApplicationContext appCtx; @RequestMapping(value = "changeLocale")
public String changeLocale(String locale,HttpServletRequest request,HttpServletResponse response) { //locale 格式为 language_country,例如 en_US,zh_CN
Locale setLocale = new Locale(locale.split("_")[0] , locale.split("_")[1]);
localeResolver.setLocale(request, response, setLocale); //设置变量 locale 为当前 Locale
request.setAttribute("locale", localeResolver.resolveLocale(request)); //按当前 Locale 获取国际化信息
RequestContext requestContext = new RequestContext(request);
System.out.println(requestContext.getMessage("username")); //按指定 Locale 获取国际化信息
System.out.println(appCtx.getMessage("username", null, Locale.CHINA));
System.out.println(appCtx.getMessage("username", new Object[]{}, Locale.US)); return "locale";
//return "redirect:/";//跳转回原页面
}
}

locale.jsp代码:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %><!-- 引入spring标签 -->
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<s:message code='username'/>
<s:message code="hello" arguments="${locale.language},${locale.country}" argumentSeparator=","/>
<!-- arguments是用来给资源文件添加参数的,argumentSeparator是用来分割多个参数的标记 -->
${locale}:${locale.language}_${locale.country}
</body>
</html>

MessageBundle_en_US.properties:

 username=guodefu
hello=hi,locale.language is {0},country is {1}

MessageBundle_zh_CN.properties:

 username=郭德福
hello=嗨,当前locale的语言是{0},国家是{1}

查看结果:
http://localhost:8080/guoguo-maven-web/changeLocale?locale=en_US
http://localhost:8080/guoguo-maven-web/changeLocale?locale=zh_CN

spring mvc 国际化的更多相关文章

  1. Spring MVC国际化配置

    Spring MVC国际化配置 前言 项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,那么问题来了Spring MVC如何配置并实现国际化. 实现过程(Maven项目) 对于Spri ...

  2. Spring MVC(十六)--Spring MVC国际化实例

    上一篇文章总结了一下Spring MVC中实现国际化所需的配置,本文继上一文举一个完整的例子,我选择用XML的方式.我的场景是这样的: 访问一个页面时,这个页面有个表格,对表头中的列名实现国际化. 第 ...

  3. spring mvc 国际化的几种方案

    spring mvc 国际化的几种方案 首先配置我们项目的service-servlet.xml文件添加的内容如下: <bean id="messageSource" cla ...

  4. Spring MVC国际化

    本文基于Spring MVC 注解-让Spring跑起来.本文提到的国际化是Spring实现国际化的方案之一. (1) 在applicationContext.xml中添加以下配置信息: <!- ...

  5. SpringBoot + Spring MVC国际化使用示例

    项目中需要显示中英文两种语言,所以需要对显示的内容进行国际化,如下是一个示例程序. 程序文件结构,如下图,后面详细列出各文件的代码. 1. 编写maven的pom.xml文件,如下: <proj ...

  6. Spring MVC基础知识整理➣国际化和异常处理

    概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...

  7. Java Web 学习(7) —— Spring MVC 之国际化

    Spring MVC 之国际化 i18n 与 l10n internationalization:国际化,以 i 开头,以 n 结尾,中间 18 个字母,简称 i18n. localization:本 ...

  8. Spring MVC(3)Spring MVC 高级应用

    一.Spring MVC 的数据转换和格式化 前面的应用,都只是用HandlerAdapter去执行处理器. 处理器和控制器不是一个概念,处理器是在控制器功能的基础上加上了一层包装,有了这层包装,在H ...

  9. 使用Spring MVC 实现 国际化

    使用Spring MVC 实现 国际化     博客分类: Spring   1. 版本 Spring 3.1   2. 配置 LocaleResolver     LocaleResolver 是指 ...

随机推荐

  1. 6、android开发中遇到的bug整理

    1.使用actionProvider时出现的问题 bug复现: 解决方案: //import android.support.v4.view.ActionProvider; import androi ...

  2. ionice

    ionice – 获取或设置程序的IO调度与优先级. 命令格式: ionice [[-c class] [-n classdata] [-t]] -p PID [PID]… ionice [-c cl ...

  3. Brush Mode --- Nyoj 737 分类: Brush Mode 2014-03-25 08:10 202人阅读 评论(0) 收藏

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆 ...

  4. YEBIS

    在往项目里加yebis做各种后处理 就是看起来很高大上的各种味精 我又热!泪!盈!眶!了 压缩包解开 有各种文档 恩哼~ 大概看了下找到sample build.... 直接就success了.... ...

  5. 【翻译】Sencha Touch2.4 The Layout System 布局

    [翻译]The Layout System 布局 In Sencha Touch there are two basic building blocks: componentsand containe ...

  6. Environment.SpecialFolder.CommonApplicationData

    private void button1_Click(object sender, EventArgs e) { var path=Environment.GetFolderPath(Environm ...

  7. Base64编解码Android和ios的例子,补充JNI中的例子

    1.在Android中java层提供了工具类:android.util.Base64; 里面都是静态方法,方便直接使用: 使用方法如下: // Base64 编码: byte [] encode =  ...

  8. java基础知识回顾之抽象类和接口的区别

    /* 抽象类和接口的异同点: 相同点: 都是不断向上抽取而来的. 不同点: 1,抽象类需要被继承,而且只能单继承. 接口需要被实现,而且可以多实现. 2,抽象类中可以定义抽象方法和非抽象方法,子类继承 ...

  9. 控制台应用程序的Main方法

    总结一下Main方法规则: 1.Main 方法名大小写有规范. 2.Main 方法返回类型只有 void.int两种返回类型. 3.Main 方法的参数可以是string[] args,也可以为空,只 ...

  10. ExtJs之Ext.core.DomHelper.append

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...