我正在尝试限制PrimeFaces标签的呈现,具体取决于用户是否为管理员。
我使用以下EL来执行此操作:
<p:tab title="Admin" rendered="#{userSession.isAdmin}">
我的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;。我知道这不是一种很好的做事方式,但我目前只是将其用于测试目的。
我的问题是,标签是否未呈现,因为isAdmin在构造函数中被识别为false。如果我将构造函数更改为true,那么它会渲染。
我怎样才能做到这样才能识别isAdmin之后是真的?即在将ADMIN角色提供给用户的会话后?
是否有可能重新加载&#39;页面,以便它可以重新获取&#39; isAdmin&#39;财产改变后?
答案 0 :(得分:1)
您可以使用ManagedBean方法使用RequestContext更新任何Primefaces组件。例如,在UserSession.addRole(...)
方法的情况下。
RequestContext.getCurrentInstance().update("ID_OF_YOUR_TABVIEW")