我无法重新加载我的资源包类以反映页面上已更改的翻译(使我的最终用户)。虽然getContent方法执行并且所有转换都是从数据库和对象[] []获取的键/值成功从getContent方法返回的。每次清除缓存并通过actionListener刷新jsf页面后都会发生这种情况。
ResourceBundle.clearCache();
此外,我尝试使用以下内容并获得相同的结果。
ResourceBundle.clearCache(Thread.currentThread().GetContextClassLoader());
为什么WLS总会看到旧的?我想念一下吗?
版本:12.2.1.1.0和12.2.1.3.0
答案 0 :(得分:0)
最终用户 - 在进行翻译并为项目国际化做出贡献后,翻译将保存到数据库中, 强制执行这些操作的过程通过以下步骤完成:
创建HashMap并加载地图中的所有资源键/值对 来自数据库:
Invalid argument supplied for foreach() (View: path\vendor\tcg\voyager\resources\views\formfields\coordinates.blade.php) (View: paht\vendor\tcg\voyager\resources\views\formfields\coordinates.blade.php)
刷新应用程序的捆绑包
while (rs.next()) {
bundle.put(rs.getString(1), rs.getString(2));
}
从应用程序的SoftCache cache =
(SoftCache)getFieldFromClass(ResourceBundle.class,
"cacheList");
synchronized (cache) {
ArrayList myBundles = new ArrayList();
Iterator keyIter = cache.keySet().iterator();
while (keyIter.hasNext()) {
Object key = keyIter.next();
String name =
(String)getFieldFromObject(key, "searchName");
if (name.startsWith(bundleName)) {
myBundles.add(key);
sLog.info("Resourcebundle " + name +
" will be refreshed.");
}
}
cache.keySet().removeAll(myBundles);
获取字符串:
ResourceBoundle