2012-09-07 34 views
3

夥計們,使用自定義資源包/屬性擴展庫和Struts 2.x的

目前我們使用一組標準的屬性文件和Struts 2.x到提供我們的國際化功能 - 以及在大多數情況下,這些做到我們需要他們的東西。然而,有些時候這將是偉大的,是能夠有個別屬性資源包中引用其他屬性,例如:

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

我知道的幾個擴展,提供這些java.util.Properties各種各樣的功能,例如:

我想知道是否有人試圖將這些以某種方式集成到Struts 2.x中 - 是否可以重寫處理資源包解析的機制?

+1

我從來沒有使用Struts,但對於處理鍵擴展的自定義ResourceBundles,您可能需要看看這個:http://stackoverflow.com/questions/2605379/how-do-i-avoid-repetition- in-java-resourcebundle-strings – quaylar

回答

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。)

我已經爲研究收藏了這個問題,這裏有幾個很酷的想法。

+0

我仍然覺得我們有很多領域缺乏文檔,或者可能是S2的隱藏功能。 –

+1

@ UmeshAwasthi開始寫作;)我不記得我是如何學到這一點的,但我把它寫在書中。我可能通過推斷驗證消息做同樣的事情的能力來計算出來。 –

+0

有趣 - 幾天前我開始研究TextProviderSupport時,我簡單地偶然發現了這個問題,但並沒有意識到它的潛在意義/用處。我現在將進一步研究並反饋我的結果。 – ShaneK

相關問題