Struts 2消息资源包的替代方案

时间:2013-05-23 08:56:24

标签: java jsp struts2 resourcebundle

我正在将应用程序从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框架的理解,我得出结论,我需要一个全局属性文件,它将为我完成工作。但是,我想为标签和图像创建多个全局属性文件,例如它在现有应用程序中的工作方式(上图)。

我不知道我是怎么做到的。

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>