我想在' 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中始终可见?
我的问题是,这根本不起作用,没有任何更新。
非常感谢任何帮助。
答案 0 :(得分:0)
我发现我实际上总是在改变我的UserSession对象而不是实际的会话bean本身。
因此,我做了以下操作,只是指向我的bean:
// Previously
// UserSession us = new UserSession();
UserSession us = (UserSession) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userSession");