Ich versuche das Rendern einer PrimeFaces-Registerkarte zu beschränken, abhängig davon, ob ein Benutzer ein Administrator ist oder nicht.Update-Seite, nachdem der Bean-Wert sich geändert hat
ich folgenden EL verwende, dies zu tun:
<p:tab title="Admin" rendered="#{userSession.isAdmin}">
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üge die Rolle "admin". Ich weiß, dass dies kein guter Weg ist, aber ich verwende es nur zu Testzwecken.
Mein Problem ist, dass die Registerkarte nicht gerendert wird, da im Konstruktor isAdmin als false erkannt wird. Wenn ich den Konstruktor in "true" ändere, wird er gerendert.
Wie kann ich es so machen, dass es erkennt, dass IsAdmin danach wahr ist? d. h. nachdem die ADMIN-Rolle der Sitzung des Benutzers übergeben wurde?
Ist es möglich, die Seite neu zu laden, damit sie die Eigenschaft 'isAdmin' erneut abrufen kann, nachdem sie sich geändert hat?
rufen Sie addRole() mit AJAX-Anfrage und aktualisieren Sie Ihre Registerkarte. –
@ShadyAziz ist die Ajax-Anfrage notwendig? Sicher, wenn Sie die Registerkarte aktualisieren, wird es in der Lage zu sehen, dass es sich geändert hat? – James
ja, ist es. Denken Sie über das Prinzip hier nach. Sie möchten eine Funktion im Backend aufrufen und dann ein bestimmtes Modul in Ihrer Benutzeroberfläche aktualisieren, um es zu rendern oder nicht. Ich schlage vor, Sie lesen in Hauptgesichtern darüber. Hier ist ein einfaches Beispiel http://www.primefaces.org/showcase/ui/ajax/basic.xhtml –