Jsp pageContext.response.locale始终设置为en_US,即使浏览器的第一语言是ja
我的应用程序运行在tomcat7上,支持ja和en语言环境 我有一个login.jsp文件,我想通过以下代码设置区域设置和绑定:Jsp pageContext.response.locale始终设置为en_US,即使浏览器的第一语言是ja,jsp,locale,Jsp,Locale,我的应用程序运行在tomcat7上,支持ja和en语言环境 我有一个login.jsp文件,我想通过以下代码设置区域设置和绑定: 我的chrome浏览器设置为第一语言为日语,第二语言为英语:Accept language:ja,en;q=0.8 但是,每当加载login.jsp时,它总是将login.jsp显示为en_US。我试图显示pageContext.response.locale的内容,该值已由我们确认。显示的jsp的content language标题也确认了这一点:conten
我的chrome浏览器设置为第一语言为日语,第二语言为英语:Accept language:ja,en;q=0.8
但是,每当加载login.jsp时,它总是将login.jsp显示为en_US。我试图显示pageContext.response.locale
的内容,该值已由我们确认。显示的jsp的content language
标题也确认了这一点:content language:en-US
当我显式设置
时,login.jsp能够正确地以日语显示。但是我不想强迫login.jsp总是设置为日语。我希望根据第一个支持的Accept language
值显示login.jsp,在我的浏览器中,该值应该是ja
如何根据应用程序支持的第一种Accept语言
显示login.jsp
编辑:
我使用
进行了实验,结果显示ja
作为区域设置。这让我很困惑。pageContext.response.locale不是应该使用来自请求区域设置的值进行设置吗 Servlet规范3.1,第5.5节“Servlet应该设置响应的区域设置和字符编码。”因此这是应用程序的责任
我在Servlet或JSP规范中没有看到任何要求根据请求区域设置响应区域设置的内容。针对Mark Thomas的评论,spring的DispatcherServlet.java的render()方法使用解析机制设置请求响应的区域设置:
// Determine locale for request and apply it to the response.
Locale locale = this.localeResolver.resolveLocale(request);
response.setLocale(locale);
LocaleResolver默认为AcceptHeaderLocaleResolver,它只返回请求区域设置,如下所示:
public Locale resolveLocale(HttpServletRequest request) {
return request.getLocale();
}
谢谢你,马克!我使用的是SpringMVC,我的印象是Spring会自动为我处理任何请求。在阅读了您的答案之后,我发现只有当请求通过Spring DispatcherServlet时,Spring才会自动执行该操作。但不幸的是,在我的情况下,login.jsp是直接访问的,不通过DispatcherServlet,而是通过默认的servlet,该servlet没有设置响应区域设置。你是怎么解决的?短暂性脑缺血发作