struts2资源国际化笔记

struts2资源国际化笔记

首先说一下资源文件的定义范围,分别是全局、包级和类级。

全局的命名方式不限制,只需要在struts.properties或struts.xml中指定即可,如<constant name="struts.custom.i18n.resources"value="messageResource"/>,一般资源文件存放于classes目录下。

包级命名方式为package_language_country.properties,存放于包目录中。

类级也就是Action类级命名方式为actionName_language_country.properties,与actionName类存放同一位置。

其次是它们的加载优先级(参考【Struts2权威指南-基于WebWork核心的MVC开发】):

1.      优先加载系统中保存在ChildAction的类文件相同位置,且actionName为ChildAction的资源文件。(类级查找开始)

2.      如果在1中找不到指定key对应的消息,且ChildAction有父类ParentAction,则加载系统中保存在父类ParentAction的类文件相同位置,且actionName为ParentAction的资源文件。

3.      如果在2中找不到指定key对应的消息,且ChildAction有实现接口IChildAction,则加载系统中保存在接口IChildAction的类文件相同位置,且actionName为IChildAction的资源文件。

4.      如果在3中找不到指定key对应的消息,则查找当前包下为package命名的资源文件。(包级查找开始)

5.      如果在4中找不到指定key对应的消息,则沿着当前包上溯,直到最顶层包。

6.      如果在5中找不到指定key对应的消息,则查找struts.custom.i18n.resources常量指定的资源文件。(全局查找开始)

7.      如果在6中找不到指定key对应的消息,则直接输出该key的字条串值。只要任一步骤中找到对应信息上,系统就停止搜索。

注意:以上资源文件的使用针对的只是类国际化。如果需要对jsp进行国际化,可以作以下定义。

1.      可以在页面中使用<s:i18n …/>标签指定国际化的资源文件,然后使用<s:text …/>标签、表单标签(key)输出。如果在指定资源文件中找不到key对应的消息,系统会查找struts.custom.i18n.resources常量指定的资源文件。如果还是找不到则直接输出该key的字条串值。只要任一步骤中找到对应信息上,系统就停止搜索。

2.      当不使用<s:i18n …/>标签指定资源文件是,系统则直接加载struts.custom.i18n.resources常量指定的资源文件进行查找,如果找不到则直接输出该key的字条串值。

最后是如何使用:

1.      在类文件中getText(“key”)

2.      OGNL表达式 %{getText("login.text")}

3.      资源文件name所指定的key<s:text name="key"/>

4.      显示国际化信息<s:param value="%{getText(''key'')}"/>

<s:property value="getText('key')"/>

5.      接收Action属性<s:param value="%{username}"/>

6.      <s:radio/>标签的国际化显示

<s:radio list="#{1:getText('i18n.sex.male') ,0:getText('i18n.sex.female')}" name="sex" value="1"key="i18n.sex"/>

7.      <s:textfieldlabel="%{getText('key')}"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值