如何重新加载JSF使用的ResourceBundle?

raa*_*ory 3 java jsf

我想在按钮单击时以编程方式重新加载JSF使用的ResourceBundles.类路径中的ResourceBundle(即WEB-INF/classes)由外部应用程序修改,修改事件对我来说是已知的.

Boz*_*zho 5

尝试

ResourceBundle.clearCache(Thread.currentThread().getContextClassLoader());
Run Code Online (Sandbox Code Playgroud)

(你可以使用不带参数的相同方法)

来自javadoc

默认情况下,getBundle工厂方法创建的资源包实例会被缓存,如果已缓存,则工厂方法会多次返回相同的资源包实例.getBundle客户端可以清除缓存,使用生存时间值管理缓存资源包实例的生命周期,或指定不缓存资源包实例.有关详细信息,请参阅getBundle工厂方法,clearCache,ResourceBundle.Control.getTimeToLive和ResourceBundle.Control.needsReload的说明.