3

伙计们,

目前,我们在 Struts 2.x 中使用一组标准属性文件来提供我们的 I18N 功能 - 在大多数情况下,这些文件完全符合我们的需要。但是,在某些情况下,能够让单个属性引用资源包中的其他属性会很棒,例如:

name.first=John
name.last=Doe
name.full={name.first} {name.last}

我知道 java.util.Properties 的几个扩展提供了这些功能,例如:

我想知道是否有人曾尝试将这些以某种方式集成到 Struts 2.x 中——是否可以覆盖处理资源包解析的机制?

4

1 回答 1

2

没有像这样的内置功能,但 IIRC 您可以通过以下方式设置文本提供程序:

<bean type="com.opensymphony.xwork2.TextProvider" name="struts"
     class="com.opensymphony.xwork2.TextProviderSupport" scope="default" />

我从来没有真正做过这个,但这是一个有价值的、有趣的实验。

属性可能包括任意的 OGNL,但是——您可以同时(详细地)伪造它:

name.first=John
name.last=Doe
name.full=%{getText('name.first')} %{getText('name.last')}

(你也可以使用 ${...},但我更喜欢 %{...},所以很明显它是 OGNL。)

我已经为这个问题添加了书签以供研究,这里有几个很酷的想法。

于 2012-09-07T12:24:25.960 回答