jsf-forum.de jsf-forum.de jsf-forum.de
jsf-forum.de    
jsf-forum.de

"Vorinitialisieren" von Beans


Eine Frage, die sich einem Entwickler von JavaServer Faces- Anwendungen immer wieder stellt, ist die, wie Beans VOR einem ersten JSF-Request initialisiert werden können.

Oftmals ist es auch gewünscht, dass Parameter mittels eines Get-Requests (z.B. www.meineAnwendung.de?param1=20) übergeben werden können.

In JSF jedoch können erst nach einem ersten Request Aktionen ausgeführt werden, in denen eventuell Beans für weitere Requests bereitgestellt werden.

Eine Möglichkeit, diese Beschränkung zu umgehen, ist der Einsatz eines FrontController-Servlets. Dabei wird zunächst ein Servlet mit den entsprechenden Parametern aufgerufen, das dann intern die JSF-Beans initialisiert und mit den Werten befüllt und den Request intern dann auf eine JSF-Seite lenkt.

Bei dem beigefügten Beispiel ist jedoch zu beachten, dass der Aufruf des Servlets auch über den Faces-Kontext erfolgt. Dies ist deshalb notwendig, da der Faces-Kontext initialisiert sein muss, da ansonsten ein Faces-interner Fehler auftritt. Konkret bedeutet dies, dass das FrontController-Servlet, das z.B. auf den Namen "Controller" gemappt ist, mittels der URL www.meineAnwendung.de/faces/Controller?param1=10 aufgerufen wird.

Im Servlet selbst wird dann wie bereits weiter oben beschrieben das benötigte Bean erzeugt, mit den Werten des Requests befüllt und dann auf die eigentliche Faces-Seite weitergeleitet, die dann das Backing-Bean ganz nach JSF-Manier zur Anzeige bringt.

Die Sourcen selbst gibt's hier.

jsf-forum.de