如何在ADF 12c中重新加载列表资源包

时间:2017-09-26 22:35:53

标签: oracle-adf weblogic12c resourcebundle clear-cache

我无法重新加载我的资源包类以反映页面上已更改的翻译(使我的最终用户)。虽然getContent方法执行并且所有转换都是从数据库和对象[] []获取的键/值成功从getContent方法返回的。每次清除缓存并通过actionListener刷新jsf页面后都会发生这种情况。

ResourceBundle.clearCache();

此外,我尝试使用以下内容并获得相同的结果。

ResourceBundle.clearCache(Thread.currentThread().GetContextClassLoader());

为什么WLS总会看到旧的?我想念一下吗?

版本:12.2.1.1.0和12.2.1.3.0

1 个答案:

答案 0 :(得分:0)

最终用户 - 在进行翻译并为项目国际化做出贡献后,翻译将保存到数据库中, 强制执行这些操作的过程通过以下步骤完成:

  1. 创建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)
    
  2. 刷新应用程序的捆绑包

    while (rs.next()) {      
        bundle.put(rs.getString(1), rs.getString(2));       
    }            
    
  3. 从应用程序的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