Ist es möglich, einen Verweis auf die auszuführende managedbean im before-invokeApplication-Phaselistener zu erhalten?JSF 2: Zugriff auf die Instanz der verwalteten Bean im Phasen-Listener-Objekt?
Vor der Aufruf-Anwendungsphase sollte es klar sein, welche managedBean die Methode ausführen wird.
Für das Beispiel angenommen, es gibt 1 Main-Management-Bean, um 1 JSF-Seite zu behandeln.
Also, was ich brauche, ist im Grunde:
- Der Benutzer Zugriff auf das Programm aus dem Menü
- Weil es aus dem Menü zugegriffen wird, die Haupt Bean Methode init() verwalten wird aufgerufen, stopft zu initialisieren, wie die Vorbereitung Daten, Autorisierung tun prüft
- Nachfolgende vorträgt brauchen nicht mehr die init() Methode aufrufen, bis es aus dem Menü
zur Umsetzung der Punkt # erneut zugegriffen hat 2, ich denke, eine der Phasen abzufangen
Ich habe die API-Dokumentation über das Erhalten der verwalteten Bean in der Implementierung der Phasen überprüft, aber ich konnte nicht scheinen, irgendwelche zu finden.
Nachdem ich diese Frage eingegeben habe, merke ich, dass ich das in @PostConstruct oder dem Konstruktor der verwalteten Bean machen könnte, aber das würde nur beim ersten Erstellen der Bean funktionieren, und ich muss die Methode jedes Mal aufrufen, wenn die JSF ist Zugriff über das Menü.
Irgendwelche Vorschläge?
Grüße,
Albert Kam
Wow, so viele Möglichkeiten. Vielen Dank ! – bertie
Ich sehe nicht, wie das genau die Instanz zurückgibt, die an der Aktionsmethode beteiligt war. Ihr Ansatz erfordert, dass der Name des Beans bereits bekannt ist. Übrigens bevorzuge ich die ['Application # evaluateExpressionGet()'] (http://download.oracle.com/javaee/6/api/javax/faces/application/Application.html#evaluateExpressionGet%28javax.faces.context .FacesContext,% 20java.lang.String,% 20java.lang.Class% 29) Kurzschrift anstelle von 'ELResolver/ELContext'. Siehe auch [diese Antwort] (http://stackoverflow.com/questions/2633112/jsf-get-managed-bean-by-name). – BalusC
Nun, wenn sein Phasenlistener in der Anwendungsphase vor dem Aufruf zuhört, dann instanziert der Phasenlistener die Objektinstanz. Auf dieselbe Instanz wird in der Anwendungsmethode verwiesen (die während der Aufrufphase aufgerufen wird), da sich die verwaltete Klasse immer noch im Bereich befindet (gleiche Anforderung). Ich habe die Frage beantwortet, wie es geht, aber ich befürworte es nicht als die beste Lösung. Ich habe Alternativen angeboten, die besser zum Erreichen des Endziels geeignet scheinen. –