保存在ViewRoot中的数据是否从内存中释放?

时间:2015-01-18 11:28:30

标签: jsf jsf-2

我正在使用以下方法在jsf 1.2应用程序中保存和检索ViewRoot中的数据:

private static final String DATA_KEY="dataKey";

public static Object retrieveData(String key)
    {
        FacesContext context = FacesContext.getCurrentInstance();
        if(context == null)
            return null;
        UIViewRoot view = context.getViewRoot();
        if(view == null)
            return null;
        Map map = (Map)view.getAttributes().get(DATA_KEY);
        if(map != null)
            return map.get(key);
        else
            return null;
    }

    public static void saveData(String key, Object data)
    {
        Map map = (Map)FacesContext.getCurrentInstance().getViewRoot().getAttributes().get(DATA_KEY);
        if(map == null)
        {
            map = new HashMap();
            FacesContext.getCurrentInstance().getViewRoot().getAttributes().put(DATA_KEY, map);
        }
        map.put(key, data);
    }

我在我的很多bean中大量使用这些函数,以便能够在我的请求bean的init和post中使用相同的数据,所以我想知道ViewRoot中存储的值何时从内存中释放,是否在发布时释放用户会话结束,或请求结束时。

并且大量使用它会导致内存泄漏吗? 我应该更改每个bean的数据键还是使用相同的数据键? 请指教,谢谢。

0 个答案:

没有答案