【问题标题】:No locale when tomcat processes error pages?当tomcat处理错误页面时没有语言环境?
【发布时间】: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


    【解决方案1】:

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

    <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>
    

    【讨论】:

      【解决方案2】:

      您的错误页面可能未通过条纹过滤器。 尝试从您的 404 页面重定向 Stripes 页面。这可能会解决问题。

      【讨论】:

      • 我是 Stripes 的新手,这是有道理的。我怎么做?这是我的 web.xml 配置,所以我猜你是对的:500/error.jsp
      • 复制error.jsperror2.jsp。将error.jsp 内容更改为&lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %&gt;&lt;% response.setHeader( "Location", "/error2.jsp"); response.setHeader( "Connection", "close" ); %&gt;
      猜你喜欢
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多