我有一個奇怪的問題,其中本地化工作很好,除了我們的錯誤頁面。當tomcat處理錯誤頁面時沒有語言環境?
我正在使用Stripes框架,資源包和JSTL標籤來本地化我的頁面。語言環境由Stripes框架確定。按照條紋documentation:
條紋採用了HttpServletRequestWrapper來將調用request.getLocale()和request.getLocales()只返回所選擇的語言環境。這意味着不僅Stripes將使用正確的語言環境而不必重新確定它,但任何其他依賴於request.getLocales的本地化工具都應該默認使用正確的語言環境。這包括JSTL fmt:*標籤 - 很酷吧?
這時候一個404或500錯誤發生,其引導到我們的錯誤頁面,其配置這樣在web.xml中,除了隨處可見的偉大工程:如果我直接瀏覽到錯誤
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
頁面,本地化工作正常。舉例來說,如果我已經設置語言爲西班牙語,然後瀏覽到這個網址,出現在西班牙的頁面:
http://localhost:8080/error.jsp
但如果我設置語言爲西班牙語,然後瀏覽:
http://localhost:8080/this-page-does-not-exist-create-a-404-error
出現相同的錯誤頁面,但以英文顯示。
這是爲什麼,我該如何解決?我搜遍了所有沒有結果!
我應該添加,我已經嘗試手動檢查request.getLocale(),並將其設置爲en_US。
在設置Locale的代碼中,我們還設置了一些會話屬性「lang」和「country」。
作爲解決方法,我發現我可以讀取這些屬性並重新構建語言環境,但我想知道爲什麼會發生這種情況。
真的嗎?沒有人有任何想法? – JBCP 2012-02-13 12:11:49