2

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

我不确定我是怎么做到的。

4

2 回答 2

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" />
于 2013-05-23T09:03:50.967 回答
0

使用i18n标签

获取资源包并将其放在值堆栈上。这允许文本标签访问来自任何包的消息,而不仅仅是与当前操作关联的包。

将资源包加载到值堆栈并使用它。


就像在这个例子中一样。

获取资源包并将其放在值堆栈上。这允许文本标签访问来自任何包的消息,而不仅仅是与当前操作关联的包。

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>

于 2013-05-23T09:02:30.303 回答