首页 > 解决方案 > fmt:setBundle 在多用户中无法正常工作

问题描述

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.js 中解决这个问题。可以通过从 java 代码中设置特定于语言环境的标签来成功处理相同的内容。但是如果我没记错的话,同样应该可以通过简单的 jsp 来实现。

任何线索将不胜感激。

标签: javajsplocalizationinternationalizationjstl

解决方案


推荐阅读