fmt:setBundle在多用户环境下无法正常工作

时间:2018-09-09 20:18:31

标签: java jsp localization internationalization jstl

JSP 页面:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:setBundle basename="com.commonapp.I18n.JspResourceBundle" var="lang" />    
<fmt:message key="Home" bundle="${lang}" />

Java 类: 有两个文件
JspResourceBundle_fr_FR.class
JspResourceBundle.class extending ListResourceBundle

方案:重新启动应用程序后,如果首先通过具有法语语言环境的用户登录,然后另一个具有英语语言环境的用户通过其他浏览器登录。两个用户都看到法语页面。 如果颠倒顺序,则英语用户登录,然后是法语用户登录,两个用户都将看到英语页面。

第一个登录的用户设置捆绑软件,第二个用户从缓存中获取捆绑软件。我认为这是因为jsp代码通过该捆绑包编译为_jsp_service.class并保留在内存中。

在jsp / jstl中有什么方法可以解决此问题。通过从Java代码设置区域设置特定的标签,可以成功处理相同的内容。但是,如果我没有记错的话,应该可以通过简单的jsp达到相同的目的。

任何线索都会受到赞赏。

0 个答案:

没有答案