理想青年

理想
posts - 1, comments - 1, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2007年5月22日

struts2的资源文件如同其验证文件一样,是允许分散和集中的。使用范围在于Tags和field error中描述信息的查找。整个搜索顺序如下:
    1. ActionClass.properties  或者ActionClass_xx_XX.properties (xx_XX可以为zh_CN等)
    2. BaseClass.properties
    3. Interface.properties
    4. ModelDriven's model (如果实现了getModel())的类文件
    5. package.properties (包括superclass的package)
    6. search up the i18n message key hierarchy itself
    7. global resource properties

 global资源文件可如此定义:在struts.properties中插入

struts.custom.i18n.resources=globalMessages
那么globalMessages.properties或者globalMessages_zh_CN.properties就成为全局资源文件。全局文件一般放在src文件夹下。而下面的代码说明资源文件globalMessages位于com.sanss 这个package下面
struts.custom.i18n.resources=com.sanss.globalMessages

又可定义RingManage.properties放到与class相同的目录。还可以将资源文件命名成package.properties.搜索的顺序都是stack式的。
在资源文件中,输入的内容是属性对key-value,例如
invalid.ringName=请输入铃音名
text.createRing=创建铃音
format.date=格式化日期
这个key可在几处地方被调用
1. 使用<s:text name="text.createRing" />
2. getText方式 
<s:property value="getText('text.createRing')"/>
  <s:textfield label="%{getText('text.name')}" name="category.name"/>

3.被validator的配置文件引用key。例如在RingManage-validation.xml中的
            <message key="invalid.ringName"></message>
如果在name中以%{...}包裹一个名字,则会先在value-stack中进行ongl转换,然后再去资源文件中获取文本。
<s:text name="%{text}" />
 
在设置ui控件的label属性时,则getText使用的更为广泛。从中我们也可以看出%{}的一大用法就是计算ognl表达式的值,而不是直接使用引号中的内容。

参数化两种方式
1 直接在资源文件中使用ongl表达式,用${}包裹
2 numbered placeholders {0} through {9}.
item.edit=Edit {0}
使用numbered placeholders时也有两种方式
<s:text name="format.date" value0="created"/>
<s:text name="format.date"><ww:param value="created"/></s:text>

附:资源文件的命名规则
类名.properties 、package.properties 等前已描述,现在主要说说‘_’之后的字符的含义。
这些字符其实最后用于jdk中java.util.Locale实例的构造。

●    Locale

该类包含对主要地理区域的地域化特征的封装。通过设定Locale,我们可以为特定的国家或地区提供符合当地文化习惯的字体、符号、图标和表达格式。例如,我们可以通过获得特定Locale下的Calendar类的实例,显示符合特定表达格式的日期。Locale有以下三个构造函数:

☆     Locale(String language)

☆     Locale(String language,String country)

☆     Locale(String language,String country,String variant)

language参数:两个小写英文字符,如zh表示Chinese
country参数:代表两个大写英文字符的ISO国家或地区编码,如,CN表示China
variant参数:代表与供应商或浏览器相关的代码。如,WIN表示windows,MAC表示Macintosh,POSIX表示POSIX.
因此当资源文件给出_zh_CN或_zh都可以成功地构造Locale实例。

posted @ 2007-05-22 12:34 richy.zhang 阅读(2395) | 评论 (0)编辑 收藏