从任何的项目来讲,都一定会存在有*.properties,这个文件的结构使用了"key=value"的形式,同时在这种文件上还可以轻松的实现国际化操作的需要,所以只要是项目,都建议至少定义一个Messages.properties的文件,保存所有的提示信息.
范例:在src下定义Messages.properties文件(资源文件的命名同类名称名称命名标准一致)
info.msg=这是我发的信息:{0},{1},{2},{3},{4}
那么现在需要在struts.properties文件里面定义资源文件.
范例:修改struts.properties文件
struts.custom.i18n.resoures=Messages
随后在Action里面进行纪元文件的读取
String msg=super.getText("info.msg",new String[]{"世界","你好","和平","寻找"});
尽可能保证有多少个占位符就填写多少个内容.
在整个Struts2.x开发之中,以上形式的资源读取是最为常见的,但是在整个Struts2.x规划的时候定义了三种级别的资源文件类型:
●第一种:全局资源文件类型,推荐的使用形式;(需要在strtus.properties中注册名称)
●第二种:包级别的资源文件,只能在一个包下使用(package.preoerties);
●第三种:指定Action的资源文件,为一个Action服务 (名称与Action相同)
范例:定义包级别的资源文件--cn/zwb/action/package.properties
info.msg=今天星期一
在读取资源文件的时候,如果多个级别的资源文件都出现了,那么会按照由小到大的范围读取,如果没有再读取package.properties.如果还没有则读取全局资源;
范例:定义EchoAxtion专门使用的资源文件--EchoAction.properties(EchoAction)
info.msg=今天是周一啊啊要上课
虽然有三种资源的类型,但是如果真使用,还是定义全局文件,如果是多个,使用","分隔,
但是一定要记住,在struts.properties中定义全局资源文件的时候,不许加后缀,它默认找到"*.properties"文件