我有一个奇怪的问题,其中本地化工作很好,除了我们的错误页面。当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