Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序

我们曾经在《Struts1.x系列教程(13):国际化》一文中讲过如何通过编程的方式实现多语言的Web页面。在本文中,我们会介绍另外一种实现多语言Web页面的方法。这种方式与《Struts1.x系列教程(13):国际化》一文中所介绍的方法的区别就是无需编写一行代码就可以完成多语言的设置。

Struts提供了一个LocaleAction类来做这个工作。LocaleAction类是一个final动作类,因此,LocaleAction类不能被继承。我们可按着如下两步来使用LocaleAction类进行多语言设置:

1.配置一个动态Form(当然,也可以使用ActionForm的子类,但为了方便,建议使用动态Form)。这个动态Form至少得有一个表示语言的language属性(如zh、fr、en、jp等)。我们还可以加一个表示国家或地区的country属性(US、CN、TW等)。

2.使用<action>元素配置一个Struts动作。这个Struts动作的type属性值是org.apache.struts.actions.LocaleAction。name属性值就是在第1步配置的动作Form的name属性值。而且在<action>元素中必须有一个名为“success”的<forward>元素。如果语言设置成功,页面就会forward到“success”所指向的页面。

下面我们来举一个使用LocaleAction动作类设置语言的例子,代码如下:

……
<form-beans>
   ……
   <form-bean name="EnglishForm" type="org.apache.struts.action.DynaActionForm">
     <form-property name="language" type="java.lang.String" initial="en"/>
     <form-property name="country"type="java.lang.String" initial="US"/>
   </form-bean>
   <form-bean name="ChineseForm"type="org.apache.struts.action.DynaActionForm">
     <form-property name="language"type="java.lang.String" initial="zh"/>
   </form-bean>
</form-beans>
……<action-mappings>
   ……
   <action name="EnglishForm" path="/en"type="org.apache.struts.actions.LocaleAction">
     <forwardname="success" path="/global.jsp"/>
   </action>
   <action name="ChineseForm" path="/zh"type="org.apache.struts.actions.LocaleAction">
     <forwardname="success" path="/global.jsp"/>
   </action>
</action-mappings>
……

在上面的例子中,使用了在《Struts1.x系列教程(13):国际化》一文中建立的global.jsp文件。在启动Tomcat后,分别在IE中输入如下的URL,可以得到中文和英文的Web页面。

中文页面:http://localhost:8080/samples/zh.do

英文页面:http://localhost:8080/samples/en.do

时间: 2024-09-10 13:33:24

Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序的相关文章

Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序 一.使用IncludeAction类包含Web资源     虽然在JSP页面中可以使用<jsp:include>标签包含另一个Web资源,但Struts框架提倡在包含Web资源时应先经过Struts控制器处理后,再由Struts控制器负责包含Web资源.org.apache.struts.actions.IncludeAction类提供了包含其他We

Struts1.x系列教程(17)

Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源 一.使用IncludeAction类包含Web资源 虽然在JSP页面中可以使用<jsp:include>标签包含另一个Web资源,但Struts框架提倡在包含Web资源时应先经过Struts控制器处理后,再由Struts控制器负责包含Web资源.org.apache.struts.actions.IncludeAction类提供了包含其他Web资源的功能.使用IncludeAc

Struts1.x系列教程(11):Validator验证框架高级应用

在<Struts1.x系列教程(10):Validator验证框架入门>一文中给出的例子中的name.age和email都是简单的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以使用圆点(.)符号来访问.如我们可以通过设置<field>元素的property属性值为"employee.salary"来验证employee属性中的salary属性. 如果要验证的索引属性,我们可以使用<field>元素的indexedLis

Struts1.x系列教程(9):上传任意多个文件

从<Struts1.x系列教程(8):上传单个文件>中给出的例子可以看出,在Struts1.x中上传单个文件是非常简单的,但在实际应用中,上传文件的个数一般是不确定的,如在网络硬盘中,用户可以根据自己的需要上传任意多个文件(当然,网络硬盘一次上传文件的数目一般也是有上限的,如50个,但用户可以只上传了3个文件,因此,在这种情况下,上传文件的个数也是不确定的).如果读者用过"网易网盘"或其他类似的服务程序,它们的上传文件功能基本上都是根据用户选择的文件多少来添加要上传的文件(

Struts1.x系列教程(18):使用DispatchAction类调用多个Action方法

在使用Struts动作时,每一个Action都需要编写一个类,并且要在struts-config.xml进行配置.这对于一个拥有很多Action的Web程序来说,工作量是非常大的.为此,Struts提供了DispatchAction类,这个类允许将一个Action作为一个方法来调用.在Web浏览器中通过请求参数来指定要调用的动作. 虽然DispatchAction类是一个抽象类,但其中却没有一个抽象方法.因此,DisplatchAction的子类不用实现任何DisplatchAction类中的方

Struts1.x系列教程(15):使用DownloadAction类统计文件下载次数

除了标准的org.apache.struts.action.Action类外,在Struts中还提供了另外7个Action类来完成特殊的工作.本文及后面的文章中将介绍这些Action类的用法. 一.DownloadAction类简介 可能有时需要在Web程序中加入下载功能.如果要下载的是静态文件,可以直接交给Web服务器处理,但如果要对下载的文件做额外的功能,如统计文件的下载次数.就需要在下载文件之前先要调用相应的程序进行处理. 虽然我们可以直接在Action子类中来处理下载文件,但是如果这样的

Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序

本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅<Struts 2系列教程>来比较Struts 1.x和Struts 2.x的相同点和不同点. 一.本文给出的程序要实现什么功能 mystruts是一个录入和查询产品信息的程序.为了方便起见,本例中的产品信息表只包括了产品ID.产品名称和产品价格三个字段.mystruts的主要功能如下: 1.接受用户输入的产品ID.产品名称和产品价格. 2.验证这些字段的合法性.如果某些字段的输入不合法(如未输入产品ID),程序会for

Struts1.x系列教程(24):配置文件总结

要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml.其中web.xml用来安装Struts框架.而struts-config.xml用来配置在Struts框架中要使用的资源.如Formbean.Action.插件等.如果使用了某些插件,如Validator.Tiles等.还可能需要其他的配置文件.虽然在前面的文章中已多次使用了这两个配置文件,但都是分散介绍的.因此,在本文将对这些配置进行一下总结和回顾,以使读者对Struts的配置有一个更清醒的认识.

Struts1.x系列教程(4):标签库概述与安装

一.Struts1.x标签库概述 Struts的标签库分为如下五类: 1.HTML标签库 在HTML标签库中的定制标签一般和HTML中的tag是一一对应.如HTML中的<form>.各种类型的<input>在HTML标签库中都有定制标签和其对应.HTML标签库的目的是将视图层的组件和控制层连接起来(事实上,不使用HTML标签库中的定制标签也可以完成同样的工作,只是需要写更多的代码). 2.Bean标签库 Bean标签库中的定制标签主要用来向客户端输出文本信息.那么Struts为什么