這是我第一次使用Struts2標籤。我有一個名爲HomeAction
的類和兩個資源文件HomeAction_en.properties
和HomeAction_fr.properties
。我使用Maven構建,並且資源文件位於src/main/resources
下的適當位置;在構建之後,屬性文件最終在HomeAction.class
的相同位置。Struts2文本標籤沒有選擇正確的語言屬性文件
我在home.jsp
中使用<s:text name="..."/>
,但它在錯誤的屬性文件中拾取消息。該操作實現了接口,並且我在調試器中追蹤了該操作以確保它具有正確的語言環境。默認語言環境爲Locale.ENGLISH
,但<s:text>
返回HomeAction_fr.properties
的消息。
我試圖用<s:property value="getText()"/>
代替<s:text>
。它確實返回來自正確屬性文件的消息,但後來又遇到了另一個問題:屬性文件中的文本被修改,並在瀏覽器中結束錯誤。例如,法國財產文件包含此字符串:Centre moteur — Requêtes de Services
。它使用<s:text>
正確呈現,但在使用<s:property>
時,它在瀏覽器中以Centre moteur &mdash; Requ&#xea;tes de Services
結尾,並且它不能正確呈現。
我一直在嘗試幾個小時來解決這個問題,但沒有成功。任何幫助將不勝感激。
由於您的名字是D. Laroche,您來自蒙特利爾,是否有可能從您的瀏覽器中檢索語言環境信息?如果不能確定用戶的語言環境,則應用「默認」,但我猜你的瀏覽器或機器本身具有「fr_ca」作爲語言環境。 – 2012-03-07 03:21:17
我的理解是,如果動作實現'LocaleProvider'接口(它定義方法'getLocale()'),那應該覆蓋瀏覽器設置。無論如何,我只是在配置了英語作爲首選語言的瀏覽器中嘗試過,而且我仍然看到法語版本。謝謝你的評論。 – 2012-03-07 07:15:54