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学习笔记(八)——国际化的更多相关文章

  1. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  2. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  3. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  4. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  5. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  6. Go语言学习笔记八: 数组

    Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...

  7. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  8. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  9. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

随机推荐

  1. Java 数据类型在实际开发中应用二枚举

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.在JDK1.5之前,人们用接口来描述这一种数据类型. 1. ...

  2. 取一个整数a从右端开始的4~7位

    题目:取一个整数a从右端开始的4-7位. 程序分析:可以这样考虑: (1)先使a右移4位. (2)设置一个低4位全为1,其余全为0的数.可用~(~0 < <4) (3)将上面二者进行&am ...

  3. Javascript百学不厌-递归

    虽然偶尔也用过,但是从来没具体来整理过 普通递归: function fac(n) { ) ; ); } fac() 这是个阶乘.但是占用内存,因为: fac(5) (5*fac(4)) (5*(4* ...

  4. Druid 详细介绍

    文章来自阿里巴巴 Druid是一个JDBC组件,它包括三部分:  DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可 ...

  5. json-server mock数据

    前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...

  6. (转)java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  7. (转)Apache与Tomcat 区别联系

    Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. Apache是web服 ...

  8. POI读取excel工具类 返回实体bean集合(xls,xlsx通用)

    本文举个简单的实例 读取上图的 excel文件到 List<User>集合 首先 导入POi 相关 jar包 在pom.xml 加入 <!-- poi --> <depe ...

  9. sublime自定义配置

    { "expand_tabs_on_save": true, "font_size": 13, "ignored_packages": [ ...

  10. CentOS 访问 Windows 共享目录

    起因 由于公司的网络切换后,将所有的服务器都切换到了指定的网段(工作电脑在一个网络,服务器在另一个网络:这样一来,不同部门的 work stations 可以彼此访问,不同部门的服务器(servers ...