spring mvc 国际化
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 国际化的更多相关文章
- Spring MVC国际化配置
Spring MVC国际化配置 前言 项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,那么问题来了Spring MVC如何配置并实现国际化. 实现过程(Maven项目) 对于Spri ...
- Spring MVC(十六)--Spring MVC国际化实例
上一篇文章总结了一下Spring MVC中实现国际化所需的配置,本文继上一文举一个完整的例子,我选择用XML的方式.我的场景是这样的: 访问一个页面时,这个页面有个表格,对表头中的列名实现国际化. 第 ...
- spring mvc 国际化的几种方案
spring mvc 国际化的几种方案 首先配置我们项目的service-servlet.xml文件添加的内容如下: <bean id="messageSource" cla ...
- Spring MVC国际化
本文基于Spring MVC 注解-让Spring跑起来.本文提到的国际化是Spring实现国际化的方案之一. (1) 在applicationContext.xml中添加以下配置信息: <!- ...
- SpringBoot + Spring MVC国际化使用示例
项目中需要显示中英文两种语言,所以需要对显示的内容进行国际化,如下是一个示例程序. 程序文件结构,如下图,后面详细列出各文件的代码. 1. 编写maven的pom.xml文件,如下: <proj ...
- Spring MVC基础知识整理➣国际化和异常处理
概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...
- Java Web 学习(7) —— Spring MVC 之国际化
Spring MVC 之国际化 i18n 与 l10n internationalization:国际化,以 i 开头,以 n 结尾,中间 18 个字母,简称 i18n. localization:本 ...
- Spring MVC(3)Spring MVC 高级应用
一.Spring MVC 的数据转换和格式化 前面的应用,都只是用HandlerAdapter去执行处理器. 处理器和控制器不是一个概念,处理器是在控制器功能的基础上加上了一层包装,有了这层包装,在H ...
- 使用Spring MVC 实现 国际化
使用Spring MVC 实现 国际化 博客分类: Spring 1. 版本 Spring 3.1 2. 配置 LocaleResolver LocaleResolver 是指 ...
随机推荐
- submit和button的区别
两者主要区别在于:submit可以提交表单(form),而button如果不指定onclick等事件处理函数,它是不做任何事情的.注意哦,在页面上<input type="submit ...
- 【BZOJ】【2245】【SDOI2011】工作安排
网络流/费用流 裸题吧……直接建模就好了……所谓的“分段函数”就是吓唬你的,其实就是对于每个人分开建几条流量不同.费用不同的弧而已. 对每种产品,连S->i ,(c[i],0):对每个工作人员 ...
- 创建REST服务应用程序
Web服务类别有两种,一种是基于SOAP协议的服务,另一种是基于HTTP协议的REST架构风格的服务.REST服务的数据格式有两种:XML 和 JSON,REST服务已被大量应用于移动互联网中. 本文 ...
- Leetcode#150 Evaluate Reverse Polish Notation
原题地址 基本栈操作. 注意数字有可能是负的. 代码: int toInteger(string &s) { ; ] == '-' ? true : false; : ; i < s.l ...
- Intent.ACTION广播大全
Intent.ACTION广播大全 Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED ...
- AJAX实现仿Google Suggest效果
修复了一些细节代码(支持持续按键事件) *项目名称:AJAX实现类Google Suggest效果*作者:草履虫(也就是蓝色的ecma)*联系:caolvchong@gmail.com*时间:2007 ...
- BZOJ2463: [中山市选2009]谁能赢呢?
感慨下汉堡的找水题能力… /************************************************************** Problem: 2463 User: zhu ...
- Linux系统下利用wget命令把整站下载做镜像网站
Linux系统下利用wget命令把整站下载做镜像网站 2011-05-28 18:13:01 | 1次阅读 | 评论:0 条 | itokit 在linux下完整的用wget命令整站采集网站做镜像 ...
- 【leetcode】Contains Duplicate & Rectangle Area(easy)
Contains Duplicate Given an array of integers, find if the array contains any duplicates. Your funct ...
- ExtJs布局之Column
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...