Primefaces 组件未使用 RequestContext 更新

Primefaces Component not updating using RequestContext

我正在尝试在 'isAdmin' 值更改后更新 primefaces 组件。

我正在使用以下 HTML 页面:

<h:form id="form">
    <p:tabView id="tabs">
        ...
        <p:tab title="Admin" rendered="#{userSession.isAdmin}">
        ...
        </p:tab>
    </p:tabView>
</h:form>

我的用户会话class:

@ManagedBean(name="userSession")
@SessionScoped

public class UserSession {
    .
    .
    .
    public boolean isAdmin;

    public UserSession() {
         isAdmin = false;
    }

    public void addRole(String role) {
        if (role.equals("ADMIN") {
            this.isAdmin = true;
        }

        role.add(role)
    }
}

调用 addRole() 方法并添加角色 "ADMIN"。我知道这不是一个好的做事方式,但我目前仅将其用于测试目的。

然后,在我处理登录和调用 addRole() 方法的 class 下,我尝试使用以下方法更新组件:

RequestContext.getCurrentInstance().update("form");

我一直在尝试更新表格,因为我相信它在 DOM?

中始终可见

我的问题是,这根本不起作用,没有任何更新。

非常感谢任何帮助。

我发现我实际上一直在更改我的 UserSession 对象而不是实际的会话 bean 本身。

因此,我执行了以下操作并改为指向我的 bean:

// Previously
// UserSession us = new UserSession();
UserSession us = (UserSession) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userSession");