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. springmvc+jdbc连接数据库(第一个微商项目,代理注册)

    String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");手动自动生成Uuid ...

  2. 微信小程序多宫格抽奖

    最近闲来无事,做了一个多宫格抽奖的例子,有什么需要改进或者错误的地方,请留言,谢谢 首先看效果 思路是先让其转动2圈多,然后再进行抽奖,格子运动用的是setTimeout,让其运行的时间间隔不一样,然 ...

  3. Linux常用命令及shell技巧

    这里列出一些个人在工作中常使用的各种linux命令,每一个不详细讲参数,只写经常用的参数.希望快速获得在linux命令行工作的能力的朋友可以看看.本人一直觉的,不使用linux 图形界面,以xshel ...

  4. 迭代器 Iterator

    迭代器 Iterator 2016-5-7 可以这样说,迭代器统一了对容器的访问方式. 考虑这样的情景:原本是对着List编码,但是后来发现需要把相同的代码用于Set.我们需要一种不关心容器类型 而能 ...

  5. Spring AOP 和 动态代理技术

    AOP 是什么东西 首先来说 AOP 并不是 Spring 框架的核心技术之一,AOP 全称 Aspect Orient Programming,即面向切面的编程.其要解决的问题就是在不改变源代码的情 ...

  6. UWP中使用Composition API实现吸顶(2)

    在上一篇中我们讨论了不涉及Pivot的吸顶操作,但是一般来说,吸顶的部分都是Pivot的Header,所以在此我们将讨论关于Pivot多个Item关联同一个Header的情况. 老样子,先做一个简单的 ...

  7. nopCommerce 3.9 大波浪系列 之 网页加载Widgets插件原理

    一.插件简介 插件用于扩展nopCommerce的功能.nopCommerce有几种类型的插件如:支付.税率.配送方式.小部件等(接口如下图),更多插件可以访问nopCommerce官网. 我们看下后 ...

  8. Spring源码情操陶冶-AbstractApplicationContext#initMessageSource

    承接前文Spring源码情操陶冶-AbstractApplicationContext#registerBeanPostProcessors 约定web.xml配置的contextClass为默认值X ...

  9. 在CentOS7上部署OpenStack 步骤详解

    OpenStack作为一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,开放源代码项目的云计算管理平台项目.具体知识我会在后面文章中做出介绍,本章主要按步骤给大家演示在Cent ...

  10. 6.RDD持久性

    RDD持久性 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark弹性分布式数据集 6 ...