【发布时间】:2012-03-02 15:49:15
【问题描述】:
我有一个奇怪的问题,本地化效果很好,除了我们的错误页面。
我正在使用 Stripes 框架、资源包和 JSTL 标签来本地化我的页面。语言环境由 Stripes 框架确定。据条纹documentation:
Stripes 使用 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>
如果我直接浏览到错误页面,本地化工作正常。例如,如果我已经将语言设置为西班牙语,然后浏览到此 url,页面显示为西班牙语:
http://localhost:8080/error.jsp
但如果我将语言设置为西班牙语,然后浏览到:
http://localhost:8080/this-page-does-not-exist-create-a-404-error
出现相同的错误页面,但以英文呈现。
为什么会这样,我该如何解决?我找遍了都没有结果!
我应该补充一下,我已经尝试手动检查 request.getLocale(),它被设置为 en_US。
在设置Locale的代码中,我们还设置了一些会话属性,“lang”和“country”。
作为一种解决方法,我发现我可以读取这些属性并重建语言环境,但我想知道为什么会发生这种情况。
【问题讨论】:
标签: java tomcat internationalization locale stripes