Java tomcat处理错误页面时没有区域设置?

Java tomcat处理错误页面时没有区域设置?,java,tomcat,internationalization,locale,stripes,Java,Tomcat,Internationalization,Locale,Stripes,我有一个奇怪的问题,除了在我们的错误页面上,本地化非常有效 我正在使用Stripes框架、资源包和JSTL标记来本地化我的页面。区域设置由Stripes框架确定。根据条纹: Stripes使用HttpServletRequestWrapper调用request.getLocale(),request.getLocales()只返回所选的区域设置。这意味着不仅Stripes将使用正确的区域设置而无需重新确定,而且依赖request.getLocales的任何其他本地化工具也应默认为正确的区域设置。

我有一个奇怪的问题,除了在我们的错误页面上,本地化非常有效

我正在使用Stripes框架、资源包和JSTL标记来本地化我的页面。区域设置由Stripes框架确定。根据条纹:

Stripes使用HttpServletRequestWrapper调用request.getLocale(),request.getLocales()只返回所选的区域设置。这意味着不仅Stripes将使用正确的区域设置而无需重新确定,而且依赖request.getLocales的任何其他本地化工具也应默认为正确的区域设置。这包括JSTLFMT:*标签-酷吧

这在任何地方都非常有效,除了404或500错误发生时,这会指向我们的错误页面,该页面在web.xml中的配置如下:

<error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
</error-page>

404
/error.jsp
如果我直接浏览到错误页面,本地化工作正常。例如,如果我已经将语言设置为西班牙语,然后浏览到此url,则页面将以西班牙语显示:

但如果我将语言设置为西班牙语,然后浏览到:

出现相同的错误页面,但以英语呈现

为什么会这样,我该如何修复它?我找遍了,没有结果

我应该补充一点,我已经尝试手动检查request.getLocale(),它被设置为en_US

在设置区域设置的代码中,我们还设置了一些会话属性,“lang”和“country”


作为一种解决方法,我发现我可以读取这些属性并重建区域设置,但我想知道为什么会发生这种情况。

您的错误页面可能没有通过筛选。
尝试从404页面重定向条纹页面。这可能会解决问题。

原来问题是Stripes正在处理设置区域设置,但错误页面没有通过Stripes Dispatcher传递。解决方案是在下面添加错误行:

<filter-mapping>
    <filter-name>StripesFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <servlet-name>StripesDispatcher</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

条纹滤光片
/*
条带调度器
要求
包括
向前地
错误

我不熟悉条纹,这很有道理。我该怎么做?这是我的web.xml配置,所以我想你是对的:500/error.jsp Copy
error.jsp
as
error2.jsp
。将
error.jsp
内容更改为