Struts2(十二)---消息处理与国际化

(1)如何配置国际化资源文件
I Action范围的国际化资源文件:在Action类文件中所在的路径建立名为ActionName_language_country.properties的文件.
II 包范围资源文件:在包的根路径下建立名为Package_language_country.properties的属性文件,一旦建立处于该包下的所有Action都可以访问该资源文件.注意:包范围资源文件的baseName就是Package,不是Action所在的包名.例:
这里写图片描述
III 全局资源文件
~~命名方式[baseName]_language_country.properties
~~struts.xml <!-- 配置国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="[baseName]"></constant>

IV 国际化资源文件的加载顺序—>离当前Action较近的优先被加载.
V 如何在页面上和Action类中访问国家化资源文件的Value值
1)在Action类中,若Action类中实现了TextProvider接口,则可以调用其getText()方法获取Value值(通过继承ActionSupport的方式)
2)JSP页面上访问国际化消息:
~不带占位符:

<s:text name="key"/>

表单元素的 label 属性:可替换为 key 或使用 getText() 方法,并对其进行强制 OGNL 解析
~ 带占位符:
<s:text.../> 标签中使用多个 <s:param.../> 标签来填充消息中的占位符。
Struts2 直接在国际化消息资源文件中通过 “${}” 使用表达式,该表达式将从值栈中获取对应的属性值
例:


    time=Time:{0}

    <s:text name="time">
        <s:param value="date"></s:param>
    </s:text>

    ------------------------------------

    time2=Time:${date}

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

(2)实现通过超链接切换语言
I 具体确定Locale对象的过程(可参照i18n拦截器源码)

· Struts2使用i18n拦截器处理国际化,并且将其注册在默认的拦截器栈中.
· i18n拦截器在执行Action方法前,自动查找请求中一个名为request_locale的参数,如果该参数存在,拦截器将其作为参数,转换成Locale对象,并将其设为 用户默认的Locale(代表国家/语言环境).并把其设置为session的WW_TRNS_I18n_LOCALE属性
·若request没有名为request_locale的参数,则i18n拦截器会从session中获取WW_TRNS_I18n_LOCALE的属性值,若该值不为空,则从该属性值设置为浏览者的默认Locale
·若session中的WW_TRNS_I18n_LOCALE的属性值为空,则从ActionContext中获取Locale对象
这里写图片描述
II 具体实现:只需要在超链接的后面附着request_locale的请求参数,值是语言国家代码

<a href="testI18n.action?request_locale=en_US">English</a>
<a href="testI18n.action?request_locale=zh_CN">中文</a>

注:超链接必须是一个struts2请求,即需要i18n拦截器工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值