JSF/Xpages 如何清除会话范围?

Pat*_*ten 2 java jsf session-scope xpages

我想清除 xpages 应用程序中的当前会话范围并再次重新加载它们。我努力了:

public Map<String, Object> sesScope;
this.sesScope = JSFUtil.getSessionScope();

clearMap(sesScope);

private void clearMap(Map<String, Object> map ){ // Get iterator for the keys
    String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
    utils.printToConsole(this.getClass().getSimpleName().toString() + " " + methodName);
    utils.printToConsole("-------before removing------");
    utils.printToConsole(map.toString());

    Set keyset = map.keySet();
    Iterator itr = keyset.iterator();
    while (itr.hasNext()) {
        itr.next();
        itr.remove();
    }

    utils.printToConsole("--------After removing-------");
    utils.printToConsole(map.toString());
}
Run Code Online (Sandbox Code Playgroud)

不知怎的,我不能简单地说 sesScope.clear() 因为这会导致错误:

com.sun.faces.context.BaseContextMap.clear(ExternalContextImpl.java:392) 处的 java.lang.UnsupportedOperationException

如何正确清除会话范围?

Per*_*ten 5

我这样做是为了清除 sessionScope:

for (final String key : JSFUtil.getSessionScope().keySet()) {
    JSFUtil.getSessionScope().remove(key);
}
Run Code Online (Sandbox Code Playgroud)