如何在ADF 12C中重新加载列表资源bundle



我无法重新加载我的资源束类,以反映页面上更改的翻译(使我的最终用户)。尽管getContent方法执行,并且所有翻译作为键/值从数据库和object [] []获取的键/值成功地从getContent方法返回。每次我清除缓存并通过ActionListener刷新JSF页面。

都会发生这种情况。
ResourceBundle.clearCache();

我也尝试使用以下并获得相同的结果。

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

为什么WLS总是看到旧的?我想念什么吗?

版本:12.2.1.1.0和12.2.1.3.0

最终用户 - 进行翻译并促进项目国际化后,将翻译保存到数据库中,输入这些操作的过程是通过以下步骤完成的:

  1. 创建一个hashmap并在地图中加载所有资源密钥/谷物对从数据库中:

    while (rs.next()) {      
        bundle.put(rs.getString(1), rs.getString(2));       
    }            
    
  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);
    
  3. 从应用程序的ResourceBoundle获取A字符串:

    for (String resourcebundle : bundleNames) {
            String bundleName =
            resourcebundle + (bundlePostfix == null ? "" : bundlePostfix);
            try {
                  bundle =  ResourceBundle.getBundle(bundleName, locale, getCurrentLoader(bundleName));
            } catch (MissingResourceException e) {
                // bundle with this name not found;
            }
            if (bundle == null)
                continue;
            try {
                message = bundle.getString(key);
                if (message != null)
                    break;
            } catch (Exception e) {
        }
    } 
    

相关内容

  • 没有找到相关文章

最新更新