精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-05-13
9.4 资源文件读取顺序在进入具体示例之前,先来写一个Action,然后配置9.3.2节中的jsp作为这个Action的结果页面,好方便本节知识的示范。 这个Action非常的简单,什么都不做,只是让execute方法返回SUCCESS即可。示例代码如下:
java代码:
在struts.xml中,配置9.3.2节中的jsp为这个Action的后继页面。
java代码:
接下来测试的时候,都直接访问http://localhost:9080/helloworld/i18nAction.action即可。 注意:本节中的访问,都是在浏览器使用中文zh_CN的前提下访问的。 9.4.1全局级资源文件在9.3节中,使用的就是全局级资源文件。全局级资源文件只需要在struts.xml中或者struts.properties文件中设置常量值struts.custom.i18n.resources即可。 仍以前面在struts.xml中的设置为例,示例如下:
java代码:
这里设置的message就是一组国际化资源文件名的前缀。如果有多组国际化资源文件,则以逗号分隔。如“message,dictionary”,就表示还另有一套以dictionary为前缀名的国际化资源文件,这些文件都放在classpath的根目录上。 9.4.2包级资源文件包级资源文件指的是,在当前访问的Action的同包下,声明一组package.properties,可能包括package.properties、package_zh_CN.properties、package_en_US.properteis等等。注意文件名称就是叫package.properties,而不是“包的名称.properties”。 要设置包级资源文件,就必须放在Action这个类的同包下,比如可以建立一个package_zh_CN.properties,放在测试使用的Action同包下,示例如下:
java代码:
这时,再次测试,会发现显示的就是刚刚设置的“labela in zh_CN with package”了。当然,在这个包下所有Action以及Action的后继页面,都可以访问这个文件中的信息。 如果包级资源文件和全局级资源文件同时存在,则包级资源文件覆盖全局级资源文件中的同key的信息。 9.4.3类级资源文件1:类级资源文件入门 类级资源文件比较复杂,这里先做一个简单的示例。可以在当前访问的Action类的同包下,声明一组以该Action类名为前缀的国际化资源文件,可能包括Action类名.properties、Action类名_en_US.properties、Action类名_zh_CN.properties等等。 比如访问的Action是cn.javass.i18n.I18NAction,那么,要设置的包级资源文件,就必须放在cn.javass.i18n这个包下,比如来建立一个I18NAction_zh_CN.properties文件,示例如下:
java代码:
这时,再次访问就会发现显示的就是刚刚设置的“labela in zh_CN with action”了。当然,在这个Action以及这个Action的后继页面,都可以访问这个文件中的信息。 如果类级资源文件和包级资源文件同时存在,则类级资源文件覆盖包级资源文件中的同key信息。 2:多种类级资源文件及其覆盖顺序 类级资源文件最为复杂,并不仅是一种,而是分为四种:
如果多种资源文件同时出现,将遵照上述类型出现的顺序进行覆盖,即ActionClass最优先,它会覆盖其他所有的资源文件,最常用的也是ActionClass这种方式。 9.4.4资源文件的覆盖顺序资源文件很多,它们的覆盖顺序为:类级>包级>全局级。 做个示例来体会一下,比如为前面示例的I18NAction,同时设置类级、包级和全局级的资源文件,然后来访问看看效果。 1:先来准备资源文件 类级资源文件,名称为:I18NAction_zh_CN.properties,放在I18NAction同包下,内容为:
java代码:
包级资源文件,名称为:package_zh_CN.properties,放在I18NAction同包下,内容为:
java代码:
全局级的资源文件,名称为:message.properties,放在src下,内容为:
java代码:
struts.xml的内容如下:
java代码:
2:运行看看效果,此时的输出应该是
java代码:
3:把I18NAction_zh_CN.properties文件中的labela改个名称,不管改成什么,不是“labela”就行,然后重新启动服务器,再次运行,看看效果此时的输出应该是:
java代码:
4:把package_zh_CN.properties文件中的labela改个名称,不管改成什么,不是“labela”就行,然后重新启动服务器,再次运行,看看效果此时的输出应该是:
java代码:
私塾在线网站原创《研磨struts2》系列 转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4086.html】 欢迎访问http://sishuok.com获取更多内容 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1144 次