Primefaces组件不使用RequestContext更新

时间:2016-06-20 09:05:57

标签: ajax jsf jsf-2 primefaces el

我想在' isAdmin'之后更新一个primefaces组件。价值变化。

我正在使用以下HTML页面:

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

我的UserSession类:

@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()方法并添加角色&#34; ADMIN&#34;。我知道这不是一种很好的做事方式,但我目前只是将其用于测试目的。

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

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

我一直在尝试更新表单,因为我相信这在DOM中始终可见?

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

因此,我做了以下操作,只是指向我的bean:

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