我想根据用户是否是管理员来限制PrimeFaces选项卡的呈现。bean值更改后的更新页面
我使用以下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()方法被调用,并添加角色 “ADMIN”。我知道这不是一种好的做事方式,但我现在只是将它用于测试目的。
我的问题是,该选项卡没有被渲染,因为isAdmin在构造函数中被识别为false。如果我将构造函数更改为true,则它会渲染。
我该怎么做才能认识到isAdmin事后是真的?即在ADMIN角色已被授予用户的会话之后?
是否有可能'重新加载'页面,以便它可以在更改后重新提取'isAdmin'属性?
使用ajax请求调用addRole()并更新您的选项卡。 –
@ShadyAziz是否需要ajax请求?当然,如果你更新标签,它将能够'看到'它已经改变了? – James
是的,是的。想想这里的主人吧。你想在后端调用一个函数,然后更新UI中的某个模块来渲染它。 我建议你阅读有关它的素质面孔。这里是一个简单的例子 http://www.primefaces.org/showcase/ui/ajax/basic.xhtml –