struts2里资源国际化的配置

来源:互联网 发布:东易日盛网站源码 编辑:程序博客网 时间:2024/05/16 03:50

struts里面的资源文件一共有三个范围,全局范围,package范围,Action范围,下面我们来大致了解下它们的配置和用法

1.全局范围

 首先,得在struts.xml里面配置一个常量

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

value指明全局资源文件的基名,比如若是上面这种配置的话,在src目录下建两个资源文件

yuchao_en_US.properties(英文环境),yuchao_zh_CN.properties(中文环境),以key=value的形式写好资源文件就可以在action或jsp中访问了。例如在yuchao_en_US.properties中配置name=zhangsan

yuchao_zh_CN.properties中配置name=/u5F20/u4E09(“张三”的utf-8编码格式)

那么我们在jsp中就可以通过<s:text name="name"/>输出国际化信息了,在jsp页面就可以通过

<s:textfield key="name"/>来输出,在继承了ActionSupport的Action中可以通过this.getText("name")来输出

我们还可以为国际化信息指定占位符,更加灵活地使用资源文件,比如 我们在资源文件里配置

welcome={0},welcome to {1} java(中文我就不写了,类似的)

在jsp页面可通过<s:text name="welcome">

                    <param>zhangsan</param>

                    <param>study</study>

                    </s:text>

来输出“zhangsan,welcome to study java”信息,在action下可以通过this.getText("welcome",new String[]{"zhangsan","study"})来输出 “zhangsan,welcome to study java”

2.package范围

用法和全局范围除了基名是package外,其他都是完全相同的,yuchao_en_US.properties改成package_en_US.properties即可,不需要指定struts.custom.i18n.resources常量

3.Action范围

基名改为ActionClassName_en_US.properties其它与上面两种情况完全相同

不需要指定struts.custom.i18n.resources常量

 

 

 

资源文件的搜索范围

首先struts会在与类名一致的ActionClassName_language.properries下搜索,如果搜索不到才会在Action所在的包下搜索,再找不到的话就会在上层包范围下搜索,只有找不到最后才会在“struts.custom.i18n.resources”指定的常量下去搜索(这里都是通过key来搜索的)

 

 

使用指定的资源文件来输出国际化信息

<s:i18n name="yuchao">

  <s:text name="name">

</s:i18n>

可以输出基名为yuchao的资源文件里面的信息

 

如果要访问某个包下的资源文件,可以通过

<s:i18n name="com/yuchao/action/package">

  <s:text name="welcome">

     <s:param>zhangsan</s:param>

     <s:param>study</s:param>

 </s:text>

</s:i18n>

来访问

 

结束。。。

(若有不完整的地方,欢迎各位补充,不胜感激,^_^ )