第20章 Struts2框架技术

Struts2 的国际化操作


Struts2实现国际化的原理


一般来说,Struts2视图层的JSP页面不会使用硬代码,而是用资源文件中的Key值代替硬代码。


Struts2实现国际化的一般步骤


1.在配置文件中定义basename

basename也就是资源文件的第一个单词,Struts2框架根据basename去查找资源文件。作为一个常量定义,可以在不同的配置文件中去实现。

假设现在要定义basename为globalMessages,在struts.properties文件中,可以如下定义。

struts.custom.i18n.resources=globalMessages


在struts.xml中可以如下定义:

<constant name="struts.custom.i18n.resources" value=" globalMessages">


在web.xml中可以如下配置:

<init-param>
   <param-name>struts.custom.i18n.resources</param-name>
   <param-value>globalMessages</param-value>
 </init-param>


配置好basename后,程序员就可以编写资源文件了,资源文件命名格式为 basename_language_country.properties。


2.编写中英文资源文件

不同的资源文件给相同的变量(Key)赋予不同的值。这样JSP页面就可以根据Key值去显示不同语言的字符串。定义globalMessages_zh_CN.properties。


3.将中文资源文件转换为unicode编码

由于中文资源文件中出现了非西欧字符,必须把中文字符转换为unicode码,这是因为Java的国际化是通过unicode编码实现的。JDK提供了一个

native2ascii转换工具,在DOS环境下,将目录切换到JDK安装目录的bin目录下输入:

native2ascii  globalMessages  _zh_CN.properties  globalMessages  _zh_CN.properties


4.编写用户注册页面


5.编写Action类


6.编写注册成功的success.jsp页面


使用不同范围的资源文件


1.包范围资源文件


可以为某个package指定其资源文件,这个文件就是从属于包范围的,它可以被该package的所有Action类以及JSP页面所使用。包资源文件名按照

package_language_country.properties的方式命名。


2.Action资源文件


可以为某个Action类指定其资源文件,这个文件被该Action专用。Action资源文件的命名规则为:ActionName_language_country.properties。


3.临时资源文件


临时资源文件指的是JSP页面在被Web容器解析时动态加载的资源文件。在编写JSP文件时,可以使用<s:i18n>标签来指定该JSP文件要使用的资源

文件。


加载资源文件的顺序


Struts 2是按照特定的顺序来加载不同范围的资源文件的,一般来说,这个顺序就是由小范围到大范围。Action类和JSP页面都有可能用到资源文件,

下面对它们的加载顺序进行说明。


1.Action用到的资源文件的加载顺序

假如现在有一个业务控制器childAction,它有一个父类fatherAction,并且有一个接口fatherInterface,则按照下面的顺序加载资源文件。

(1)childAction所在的目录下,查找basename为childAction的资源文件。

(2)如果找不到对应的Key值,则在fatherAction所在的目录下,查找basename为fatherAction的资源文件。

(3)如果还找不到对应的Key值,则在fatherAction所在的目录下,查找basename为fatherInterface的资源文件。

(4)如果还找不到对应的Key值,则在包含所在的目录下,查找basename为package的资源文件。

(5)如果还找不到对应的Key值,则查找全局资源文件,即basename为struts.custom.i18n.resources常量值的资源文件。

(6)如果找到最后还找不到对应的Key值,则直接输出该Key值得字符串值。


JSP用到的资源文件的加载顺序


JSP加载资源文件的顺序没有Action那么复杂,顺序如下:

(1)在<s:i18n>标签指定的国际化资源文件中加载Key值对应的Value。

(2)如果在临时资源文件中找不到对应的Key值,则直接查找全局资源文件中的Key值。

(3)如果还找不到对应的Key值,则直接输出该Key值的字符串值。


Struts 2数据验证


使用validate()方法进行验证


程序员在编写Action类时,一般继承ActionSupport类,该类提供了一个进行数据验证的方法void validate(),如下所示:

public void validate(){
}
public void addFieldError(String fieldName,String errorMessage){
  validationAware.addFieldError(fileName,errorMessage);
}

在validate()方法中进行验证时,如果有异常信息,可以通过addFieldError()方法将异常信息添加到ActionContext中。所以程序员在Action类中可以重写

validate()方法进行客户端表单的验证。


使用配置文件进行验证


除了使用validate()方法进行验证,程序员还可以编写XML文件进行某个Action对应表单的验证。这个文件的命名规则为ActionName-validation.xml,并且

要保存在和Action类相同的目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值