您可以尝试一些方法。
<fmt:setBundle>最终将调用
ResourceBundle.getBundle(String, Locale,ClassLoader),其中字符串将是您的基名,而类加载器将是
Thread.currentThread().getContextClassLoader()。如果您使用的是JDK
1.6,则可以尝试使用
ResourceBundle.clearCache(ClassLoader)清除捆绑包缓存。在Servlet过滤器中执行此操作,并将其与其他一些逻辑结合以确定何时应该清除缓存,将是有意义的。
另一个角度是更直接地控制属性文件的加载和JSTL的配置。同样,利用过滤器(忽略异常处理):
ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();URL propsURL = ctxLoader.getResource("opto-mapping.properties");URLConnection propsConn = propsURL.openConnection();long propsLastModified = propsConn.getLastModified();// decide if you want to reload...propsConn.setUseCaches(false);InputStream propsIn = propsConn.getInputStream();ResourceBundle propsBundle = new PropertyResourceBundle(propsIn);propsIn.close();LocalizationContext propsCtx = new LocalizationContext(propsBundle);ServletContext servletCtx = this.filterConfig.getServletContext();Config.set(servletCtx, Config.FMT_LOCALIZATION_CONTEXT, propsCtx);然后,您可以仅
<fmt:message>在页面中使用。你可以找到的文档
LocalizationContext和
Config中JSTL
API。
可能有许多其他变体,但是请确保查看JDK 1.6
的较新版本
ResourceBundle(包括
ResourceBundle.Control),并牢记“底层”
API的功能,例如
URLConnection,并熟悉可用的JSTL的更多编程方面。通过其API。



