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");
我正在尝试在 '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");