Struts2 的国际化实现方式示例
作者:lihui_yy 发布时间:2022-08-10 07:26:45
以前一直看见 i18N ,现在才知道原来 i18N 就是 Internationalization,因为以 i 开头,以 N 结尾,共18个字母,也就是国际化的意思。在百度搜索主页上没有看见中英文的切换,毕竟百度在中国是为了中国人而设计的,没必要弄个英文的切换。google搜索主页上是有的,因为谷歌在中国的服务器放到了香港,所以还有繁体切换。这是怎么做到的呢?其实原理很简单,用Struts2很容易实现的。以实现中英文切换为例做一下说明:
第一步:在src目录下添加两个资源文件,命名方式很重要的。格式:baseName_language_country.properties。还有两种命名方式,都可以的,这个不用过多研究。比如,实现中英文切换我们要添加 resource_zh_CN.properties 和 resource_en_US.properties。然后将各个key-value对添加到这两个文件中,key字段一定要统一。如:
其中,value值可以使用占位符,比如:你好{0},至于怎么传参数,稍后再解释。
第二步:配置struts.properties文件,这个文件也是放在src目录下的。
第一个键值对是为了告诉程序,国际化资源文件是loginResource开头命名的资源文件。
到这里其实配置就算完事儿了,接下来就是在各个地方使用。
(1)在jsp中使用。举两个例子。
<s:text name="login.title"></s:text>
<s:textfield name="username" key="login.username"></s:textfield>
还可以输出带占位符的信息。如,有一个 login.welcome = 你好{0},那么可以用下面这种方式来显示:
<s:text name="login.welcome"><s:param><s:property value="username"/></s:param></s:text>
(2)在Action中使用。举个例子:
getText("login.username");
还可以使用带占位符的信息。如,有一个 login.welcome = 你好{0},那么可以用下面这种方式来显示:
String params[] = {"张三"};
String welcome = getText("login.welcome", params);
第三步,实现在jsp页面中的中英文切换。
index.jsp中主要部分代码如下:
<a href="lang.action?request_locale=zh_CN" rel="external nofollow" >中文</a>
<a href="lang.action?request_locale=en_US" rel="external nofollow" >English</a>
<s:form id="loginform" action="login" method="post">
<s:textfield name="username" key="login.username"></s:textfield>
<s:textfield name="psd" key="login.psd" ></s:textfield>
<s:submit key="login.submit"></s:submit>
</s:form>
主要看前两行代码,lang.action其实就是一个实现页面转换的Action,没有什么实质性的内容,随便定义一个HelloAction.java,在execute()方法中返回个success就行了。url中的这个参数 request_locale会被 i18n * 读取,然后根据这个值设置语言环境。 i18n * 是struts中default里面自带的 * 。
struts.xml配置如下:
<action name="login" class="com.main.action.LoginAction">
<exception-mapping result="error" exception="java.lang.RuntimeException"></exception-mapping>
<result name="success">/success.jsp</result>
<result name="error">/index.jsp</result>
<result name="input">/index.jsp</result>
<result name="regist">/regist.jsp</result>
</action>
<action name="lang" class="com.main.action.HelloAction">
<result name="success">/index.jsp</result>
</action>
哦了,基本完成了,接下来就是看效果啦。运行一下:
来源:http://www.cnblogs.com/lihuiyy/archive/2013/03/14/2958782.html
猜你喜欢
- @schedule 注解 是springboot 常用的定时任务注解,使用起来简单方便,但是如果定时任务非常多,或者有的任务很耗时
- 1.1、获取http请求参数是一种刚需我想有的小伙伴肯定有过获取http请求的需要,比如想前置获取参数,统计请求数据做服务的接口签名校验敏感
- 项目需求最近项目中有一个需求就是让Java代码去代替人工操作,自动生成PPT,具体就是查询数据库数据,然后根据模板文件(PPT),将数据库数
- 一、读线圈状态/// <summary> /// 读线圈状态测试 &nbs
- 在Java中,可以通过Runtime类或ProcessBuilder类来实现调用外部程序。Runtime类与ProcessBuilder类使
- 一、引言在许多编程语言中,都有函数回调这一概念。C 和 C++ 中有函数指针,因此可以将函数作为参数传给其它函数,以便过后调用。而在 Jav
- 最近在开发的过程当中,对于已有的代码,想将相关类绘制成UML类图,虽然现在有很多UML类图的优秀软件,比如ProcessOn(可视化编辑)、
- 1. 前言在Java开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题。也有的使用Postman等工具进行测试,虽然
- 本文实例为大家分享了java实现简单石头剪刀布游戏的具体代码,供大家参考,具体内容如下问题描述Alice, Bob和Cindy一起玩猜拳的游
- Springboot整合RockerMQ1、maven依赖<dependencies> <!--
- 先上效果图: 工具类在解析的过程中,我们会和byte做各种运算,所以我定义了一个byte工具类ByteUtils:using Sy
- Java IDE工具提供了多种用户独特需求和个人偏好来创建编程环境的方法。Java框架能够简化程序员的工作。这些框架被设计和开发用于在任何服
- 数据加解密的实现方式多种多样,在mybatis环境中数据加解密变得非常简单易用,本文旨在提供参考,在生产中应尽可能完成单元测试,开展足够的覆
- google benchmark已经为我们提供了类似的功能,而且使用相当简单。具体的解释在后面,我们先来看几个例子,我们人为制造几个时间复杂
- 本文实例为大家分享了java使用字符画一个海绵宝宝的具体代码,供大家参考,具体内容如下用字符画一个海绵宝宝用" &ldqu
- 前言为什么用动静态库我们在实际开发中,经常要使用别人已经实现好的功能,这是为了开发效率和鲁棒性(健壮性);因为那些功能都是顶尖的工程师已经写
- java.util.concurrent包中的工具实现核心都是AQS,了解ReentrantLock的实现原理,需要先分析AQS以及AQS与
- 本文实例讲述了Java实现矩阵加减乘除及转制等运算功能。分享给大家供大家参考,具体如下:Java初学,编写矩阵预算程序,当做工具,以便以后写
- 需求:键盘录入一个月份,输出该月份对应的季节。一年有四季3,4,5 春季6,7,8 夏季9,
- 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把