bean值更改后更新页面

时间:2016-06-17 09:22:33

标签: jsf primefaces el

我正在尝试限制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;财产改变后?

1 个答案:

答案 0 :(得分:1)

您可以使用ManagedBean方法使用RequestContext更新任何Primefaces组件。例如,在UserSession.addRole(...)方法的情况下。

RequestContext.getCurrentInstance().update("ID_OF_YOUR_TABVIEW")