2016-06-20 14 views
0

Ich versuche, eine primefaces-Komponente zu aktualisieren, nachdem sich der IsAdmin-Wert ändert.Primefaces Component, das nicht mit RequestContext aktualisiert

ich die folgende HTML-Seite bin mit:

<h:form id="form"> 
    <p:tabView id="tabs"> 
     ... 
     <p:tab title="Admin" rendered="#{userSession.isAdmin}"> 
     ... 
     </p:tab> 
    </p:tabView> 
</h:form> 

Meine Usersession Klasse:

@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) 
    } 
} 

Die addRole() -Methode aufgerufen wird, und fügt die Rolle "admin". Ich weiß, dass dies kein guter Weg ist, aber ich verwende es nur zu Testzwecken.

Dann wird unter der Klasse, wo ich Login handhaben und die addRole() -Methode aufgerufen wird, ich versuche, um die Komponente zu aktualisieren mit:

RequestContext.getCurrentInstance().update("form"); 

Ich habe das Formular zu aktualisieren versucht, wie ich dies glauben ist immer im DOM sichtbar?

Mein Problem ist, dass dies einfach nicht funktioniert und nichts wird aktualisiert.

Jede Hilfe wird sehr geschätzt.

Antwort

0

Ich fand heraus, dass ich eigentlich immer mein UserSession-Objekt anstelle der eigentlichen Session-Bean selbst änderte.

Deshalb habe ich die folgenden Hinweise und wies nur statt auf meine Bohne:

// Previously 
// UserSession us = new UserSession(); 
UserSession us = (UserSession) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userSession"); 
Verwandte Themen