Struts2学习笔记(八)——国际化
1、Struts2国际化介绍
国际化即internationalization简称i18n. 为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容是key-value键值对。
资源文件的命名可以是如下3种形式:
- baseName_language_country.properties
- baseName_language.properties
- baseName.properties
其中baseName是资源文件的基本名称,用户可以自由定义,而language和country都不可随意变化,必须是Java所支持的语言和国家。
2、国际化资源文件的分类
Struts2提供了4种方式来加载国际化资源文件:
1).全局范围,可以放置在任意位置,但是必须要在struts.xml文件中通过常量引入资源文件。
baseName_language_country.properties.如message_zh_CN.properties
<!--这是在com.sunny.action包下-->
<constant name="struts.custom.i18n.resources" value="com.sunny.action.message"></constant>
<!--这是在src下-->
<constant name="struts.custom.i18n.resources" value="message"></constant>
2).包范围,某个包下。
package_language_country.properties.如package_zh_CN.properties
3).类范围,在该类同一路径下。
actionName_language_country.properties.如LoginAction_zh_CN.properties
4).临时资源文件,在jsp页面使用<s:i18n>标记来指定classes路径下的资源文件。
<s:i18n name="com.sunny.action.I18NAction">
<s:text name="GOOD"></s:text>
</s:i18n>
3、Struts2使用国际化消息
Struts2使用国际化消息主要在如下3种方式:
1)在JSP页面中使用国际化消息,可以使用Struts2的<s:text…/>标签,该标签可以指定一个name属性,该属性指定了国际化资源文件中的key.
<s:text name="login.username"></s:text>
<s:textfield name="username" key="login.username"></s:textfield>
还可以输出带占位符的信息,比如有一个 login.welcome = 你好{0},那么可以用下面这种方式来显示:
<s:text name="login.welcome">
<s:param>username</s:param>
</s:text>
2)在Action类中使用国际化消息,可以使用ActionSupport类的getText()方法,该方法可以接受一个name参数,该参数指定了国际化资源文件中的key .
getText("login.username");
还可以使用带占位符的信息。比如有一个 login.welcome = 你好{0},那么可以用下面这种方式来显示:
String params[] = {"张三"};
String welcome = getText("login.welcome", params);
3)在表单元Label里使用国际化信息,可以为该表单标签指定一个key属性, 该key指定了国际化资源文件中的key.
4、国际化实例
1)创建全局国际化资源文件
Login_zh_CN.properties
item.name=姓名
item.password=密码
Login_en_US.properties
item.name=name
item.password=password
2)在struts.xml文件中配置国际化资源文件
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="Login" /> <package name="default" namespace="/" extends="struts-default">
<action name="i18nAction" class="com.sunny.action.I18NAction">
<result>/input.jsp</result>
</action>
</package> </struts>
3)创建jsp页面
<body>
<a href="${pageContext.servletContext.contextPath}/i18nAction?request_locale=zh_CN">中文</a>
<a href="${pageContext.servletContext.contextPath}/i18nAction?request_locale=en_US">English</a>
<form action="${pageContext.servletContext.contextPath}/login.action">
<s:textfield name="name" key="item.name"/><br>
<s:textfield name="password" key="item.password"/><br>
</form>
</body>
4)jsp显示界面


Struts2学习笔记(八)——国际化的更多相关文章
- Struts2学习笔记⑧
今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...
- Struts2学习笔记①
Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- Go语言学习笔记八: 数组
Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
- go微服务框架kratos学习笔记八 (kratos的依赖注入)
目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...
随机推荐
- Java 数据类型在实际开发中应用二枚举
在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.在JDK1.5之前,人们用接口来描述这一种数据类型. 1. ...
- 取一个整数a从右端开始的4~7位
题目:取一个整数a从右端开始的4-7位. 程序分析:可以这样考虑: (1)先使a右移4位. (2)设置一个低4位全为1,其余全为0的数.可用~(~0 < <4) (3)将上面二者进行&am ...
- Javascript百学不厌-递归
虽然偶尔也用过,但是从来没具体来整理过 普通递归: function fac(n) { ) ; ); } fac() 这是个阶乘.但是占用内存,因为: fac(5) (5*fac(4)) (5*(4* ...
- Druid 详细介绍
文章来自阿里巴巴 Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可 ...
- json-server mock数据
前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...
- (转)java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- (转)Apache与Tomcat 区别联系
Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. Apache是web服 ...
- POI读取excel工具类 返回实体bean集合(xls,xlsx通用)
本文举个简单的实例 读取上图的 excel文件到 List<User>集合 首先 导入POi 相关 jar包 在pom.xml 加入 <!-- poi --> <depe ...
- sublime自定义配置
{ "expand_tabs_on_save": true, "font_size": 13, "ignored_packages": [ ...
- CentOS 访问 Windows 共享目录
起因 由于公司的网络切换后,将所有的服务器都切换到了指定的网段(工作电脑在一个网络,服务器在另一个网络:这样一来,不同部门的 work stations 可以彼此访问,不同部门的服务器(servers ...