struts2对国际化的支持

国际化,一般对应着资源文件(properties),但是在struts2种,资源文件有3个范围的作用域,分别是全局资源文件、包资源文件、动作类资源文件。
国际化一般是对于信息的显示起作用的,那么jsp如何读取资源文件的内容呢?动作类又怎样读取资源文件的内容呢?
首先,我们要把各种范围的资源文件都创建好。
一:全局资源文件:
在Web-Inf/Classes目录下,新建格式为:名字_语言_国家
其中中文的value不能直接在properties的source环境下输入,可以借助properties环境下输入,myeclipse会自动帮我们转成字符。
二:包资源文件:名称格式为:package_语言_国家
三:动作类资源文件:名称格式为:动作类名_语言_国家
如图所示:
这里写图片描述
里面的内容分别为:welcome=hello/你好
但是为了区分包和动作类,分别在后面添加了package,action等内容
1、jsp读取资源文件的内容:
(1)、读取全局资源文件:在jsp页面中,利用struts提供个标签,s:text,其中的name为properties对应的value。代码如下

    <s:text name="welcome">
    </s:text>

然后访问的时候,直接输入:http//localhost:8080/struts2Day03/i18n.jsp浏览器就会根据本地的浏览器的语言来选择显式中文还是英文。
(2)、如果想使用占位符的形式,那么需要在properties文件的value内容中添加{0} {1}之类的占位符,然后设置的内容就在jsp页面中,利用下面的标签来设置其中的内容,对应其中的顺序即可。
(3)、如果想访问包范围,或者动作类的资源文件,那么就要通过来实现,其中的name属性,为要访问的资源文件的名称。如访问包资源文件,name:格式为:cn/ansel/i18n/package;访问动作类:cn/ansel/i18n/i118nAction
代码如下:

<s:i18n name="cn/ansel/i18n/package">
            <s:text name="welcome">
                <s:param>qwer</s:param>
                <s:param>qasd</s:param>
            </s:text>
        </s:i18n>

2、动作类读取资源文件:
(1)、通过在struts.xml文件中,先配置好目标动作类,及结果处理。代码如下:

        <action name="i18n" class="cn.ansel.i18n.i18nAction">
            <result name="success">/sucess.jsp</result>
        </action>

(2)、创建目标动作类,并且继承actionSupport类、继承该类的目的在于要使用其中的getText来读取资源文件
(3)、把读取到的信息放到request中,然后通过配置文件中的result结果转到目标页面中输出信息
代码如下:

        String value=getText("welcome",value);
        ActionContext.getContext().put("message", value);
        return SUCCESS;

注意:如果value是数组的话(即使用了占位符),可以写成:

        String value=getText("welcome",new String[]{"param1","param2",...});

(4)、然后结果处理的Jsp页面直接使用El表达式即可获取到内容,这里由于我把信息放到了message中,所以jsp页面使用的表达式为:

    ${message}

注意:关于资源文件读取的优先级,从最具体的开始,即动作类>包>全局,按照如上的顺序,找到就停止寻找。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值