使用Struts 2.x的自定义资源包/属性扩展库

时间:2012-09-07 08:11:46

标签: java properties struts2 resourcebundle

民间,

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

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

我知道java.util.Properties的几个扩展,它们提供了以下各种功能:

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

1 个答案:

答案 0 :(得分: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。)

我已经将这个问题加入书签进行研究,这里有几个很酷的想法。