2016-05-16 44 views
2

我有三個頁面,有三個不同的標題。Struts2中的全局資源包 - 粒度最佳實踐?

1個分頁標題名稱:壹:你好:你好

第2頁分頁標題名稱:第二頁:你好:你好

第3頁分頁標題名稱:第三頁:您好:您好:您好

哪個更好做,實施和最佳實踐明智:


解決方案#1

內global.properties

tab.title.page.number.one = Page One 
tab.title.page.number.two = Page Two 
tab.title.page.number.three = Page Three 
tab.title.colon    = : 
tab.title.hello    = Hello 
tab.title.hi    = Hi 

然後在jsp中的每個頁面的title標籤

1內:

<title> 
    <s:text name="tab.title.page.number.one"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

第2頁:

<title> 
    <s:text name="tab.title.page.number.two"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

第3頁:

<title> 
    <s:text name="tab.title.page.number.three"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

OR


溶液#2

內global.properties

tab.title.page.one = Page One : Hello : Hi 
tab.title.page.two = Page Two : Hello : Hi 
tab.title.page.three = Page Three : Hello : Hi 

然後在JSP頁面的每個標題標籤中:

第1頁:

<title><s:text name="tab.title.page.one"/></title> 

第2頁:

<title><s:text name="tab.title.page.two"/></title> 

第3頁:

<title><s:text name="tab.title.page.three"/></title> 

我的合作開發者認爲,這樣的HelloHi:是可重用的。但它只是靜態文本。這並沒有改變。哪個更適合使用實現,編碼標準,性能(LOL)?謝謝!

+1

我經常使用autocompleter通過短名稱使用標籤,但是您可以優化LOL。不要多次使用's:text'來表現明智。 –

回答

2

這是我完全國際化的應用程序的經驗。 您不應該爲定義不同的鍵值。

考慮你想爲user name定義一個標籤。

你能做的就是爲

lable.username=User Name 

OR

lable.inputform.username=User Name 
lable.registeration.form.username=User Name 
lable.activate.form.username=User Name 

第一種方法是當你在資源包少做要好得多。 UserName在整個應用程序中只有User Name,如果你想改變它是相當合理的,一個改變應該是足夠的。

請考慮這個龐大的資源包,很難維護,需要更多的內存。資源包將在任何時間:)

我也建議不要通過增加鍵來構建句子變成巨大的:

例如

lable.please+ lable.add + lable.your + lable.username 

讓它爲:

form.message= Please add your user name 

它讓你的jsp或動作非常複雜,並且你不會獲得很多。

所以我一般都認同你,但你的大學方法應該考慮可重用的價值!

2

幾點思考太長,無法爲註釋:

它沒有任何意義,國際化冒號:它會改變嗎?不太可能。如果它可能,請考慮使用自定義標籤/等。以包裝視圖級別的靜態文本。

在密鑰本身中使用非I18N文本有點奇怪,例如,使用.greeting而不是.hello

page.number.one似乎是不必要的冗長,而不是page.one或只是page1。或者,不要直接將其與標籤掛鉤,因爲您可能想要將其重新用於實際頁面標題或標題,只需page1.title即可。

堅果殼:我都喜歡重複使用,但IMO屬性文件對於您展示的很多東西都是錯誤的地方。使用自定義標記或實用程序方法來訪問需要更改的實際屬性。我真的很喜歡用I18N的數據庫而不是屬性文件來保存這些東西;它們更容易處理使用一個微不足道的前端,並且適當的緩存速度也一樣快。)