如何在Jetty 7/8中设置JSP响应语言环境? [英] How to set JSP response locale in Jetty 7/8?

查看:115
本文介绍了如何在Jetty 7/8中设置JSP响应语言环境?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我在servlet中以编程方式设置HTTP响应语言环境,如下所示:

If I set the HTTP response locale programmatically in a servlet as follows:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
{
    response.setLocale(SOME_LOCALE);
    // .. etc
}

然后在Jetty 7及更高版本中,任何尝试通过表达式$ {pageContext.response.locale}读取该语言环境的JSP都将获得服务器的默认语言环境,而不是上面的设置.如果我使用Jetty 6或Tomcat,则可以正常工作.

Then under Jetty 7 and later, any JSPs trying to read that locale via the expression ${pageContext.response.locale} will get the server's default locale instead of the one set above. If I use Jetty 6 or Tomcat, it works fine.

这是演示该问题的完整代码:

Here's the full code to demonstrate the problem:

public class MyServlet extends HttpServlet {

    // Use a dummy locale that's unlikely to be the user's default
    private static final Locale TEST_LOCALE = new Locale("abcdefg");

    @Override
    protected void doGet(final HttpServletRequest request, final HttpServletResponse response)
        throws IOException, ServletException
    {
        // Set a known response locale
        response.setLocale(TEST_LOCALE);

        // Publish some interesting locales to the JSP as request attributes for debugging
        request.setAttribute("defaultLocale", Locale.getDefault());
        request.setAttribute("testLocale", TEST_LOCALE);

        // Forward the request to our JSP
        getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
    }
}

还有JSP:

<html>
    <head>
        <title>Locale Tester</title>
    </head>
    <body>
        <h2>Locale Tester</h2>
        <ul>
            <li>pageContext.request.locale = '${pageContext.request.locale}'</li>
            <li>default locale = '<%= request.getAttribute("defaultLocale") %>'</li>
            <li>pageContext.response.locale = '${pageContext.response.locale}' (should be '<%= request.getAttribute("testLocale") %>')</li>
        </ul>
    </body>
</html>

Tomcat(正确)返回此值:

Tomcat returns this (correctly):

Locale Tester

    pageContext.request.locale = 'en_AU'
    default locale = 'en_US'
    pageContext.response.locale = 'abcdefg' (should be 'abcdefg')

Jetty 7(错误)返回此值:

Jetty 7 returns this (wrongly):

Locale Tester

    pageContext.request.locale = 'en_AU'
    default locale = 'en_US'
    pageContext.response.locale = 'en_US' (should be 'abcdefg')

FWIW,我使用Jetty/Tomcat Maven插件进行了上述所有测试.

FWIW, I did all the above testing using the Jetty/Tomcat Maven plugins.

推荐答案

我通过Jetty邮件列表发现这是Jetty 7中的一个错误,该错误现在已经

I found out via the Jetty mailing list that this is a bug in Jetty 7, which has now been fixed.

这篇关于如何在Jetty 7/8中设置JSP响应语言环境?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆