如何在JSP中设置用户的语言环境

4
我有一个.jsp页面,用户可以直接加载。他们使用以下URL进行请求:http://www.example.com/myfile.jsp?country=CA&language=fr
在JSP中,我获取URL的GET参数,并尝试使用以下方式设置区域设置:
<%
    String myLanguage = request.getParameter("language");
    String myCountry  = request.getParameter("country");
Locale myLocale = new Locale(myLanguage, myCountry); pageContext.setAttribute("myLocale", myLocale, PageContext.PAGE_SCOPE); %> <fmt:setLocale value="${myLocale}" scope="page" />
然后,在JSP的几个位置,会使用Struts的<bean:message bundle="ts" key="..." />从本地化的资源包中拉取消息并显示。
在更改了URL中的语言后,第一次请求此页面时,它将以美式英语(默认区域设置)返回,然后后续刷新将返回正确的本地化内容。
1个回答

2

我不熟悉Struts,但是谷歌告诉我,你需要将Locale设置为会话属性,并使用Globals.LOCALE_KEY作为键。

session.setAttribute(Globals.LOCALE_KEY, myLocale);

实际上,您不需要使用JSTL fmt:setLocale

话虽如此,我建议您在单个Filter中完成此操作,而不是在每个JSP中都进行操作。


2
哦,使用错误的条件搜索,认为自己知道得比实际多时的快乐。 - ebynum
作为一条注释:在Struts2中设置区域设置的传统方式是使用I18nInterceptor拦截器。更多详细信息请参见此帖子:https://dev59.com/JXjZa4cB1Zd3GeqPcU-J#19546961 - informatik01

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接