我正在将应用程序从Struts 1.1
迁移到Struts 2.3
。
现有应用程序以下列方式使用旧框架中的MessageResources
。
<message-resources key="label" parameter="com.abc.xyz.resources.MyLabelResources"/>
<message-resources key="image" parameter="com.abc.xyz.resources.MyImageResources"/>
这样就可以分离出不同的资源文件,每当查找完成时,都会指定包密钥,以便只搜索该特定文件。
根据我对Struts 2.2
框架的理解,我得出结论,我需要一个全局属性文件,它将为我完成工作。但是,我想为标签和图像创建多个全局属性文件,例如它在现有应用程序中的工作方式(上图)。
我不知道我是怎么做到的。
答案 0 :(得分:1)
如果您只想搜索特定文件,则可以使用<s:i18n>
标记。
如果您的操作延伸getText
ActionSupport
方法
<s:i18n name="labels">
<s:property value="getText('some.label')" />
</s:i18n>
或使用<s:text>
代码
<s:i18n name="labels">
<s:text name="some.label" />
</s:i18n>
但您也可以将多个属性文件包含在自定义默认资源包中:
<constant name="struts.custom.i18n.resources" value="images, labels" />
答案 1 :(得分:0)
使用i18n
标记
获取资源包并将其放在值堆栈上。这允许文本标记访问来自任何包的消息,而不仅仅是与当前操作相关联的包。
将资源包加载到值堆栈并使用它。
在this示例中。
获取资源包并将其放在值堆栈上。这允许 text标签用于访问来自任何bundle的消息,而不仅仅是 捆绑与当前行动相关联。
name* - the resource bundle's name (eg foo/bar/customBundle)
示例:强>
<s:i18n name="myCustomBundle"> The i18n value for key aaa.bbb.ccc in myCustomBundle is <s:property value="text('aaa.bbb.ccc')" /> </s:i18n> <s:i18n name="some.package.bundle" > <s:text name="some.key" /> </s:i18n>