[JSF 1.2 - Icefaces 1.8.1] ManagedBeans direkt instanzieren

Danielku15

Erfahrenes Mitglied
Hallo Leute.
Ich bin gerade extrem genervt da mein Projekt nicht so will wie ich. Entweder liegt's daran dass gerne mal meine Änderungen nicht aktualisiert werden oder dass Eclipse meine Breakpoints beim debuggen irgnoriert. Nun denn, zu meinem Problem:

Ich habe eine Reihe von ManagedBeans im Session Scope. (ItemBean, MemberBean,...). Diese sollen benachrichtigt werden sobald sich im ProjectBean der Wert für CurrentProject geändert hat. Dazu habe ich einfach ein Observer-Pattern implementiert welches alle im ProjectBean-Observer registrierten ProjectChangeListener-Clients bei der Wertänderung benachrichtigt.

Jeder Client(Bean) registriert sich selbst im Konstruktor beim Observer. Nun hatte ich jedoch immer das Problem dass im Observer keine Clients verfügbar waren wenn ich das Projekt geändert habe. Nach langen Debug-Versuchen bin ich darauf gestoßen dass das ItemBean und MemberBean erst dann Instanziert werden, sobald das erste Mal darauf zugegriffen wird (was erst nach der Projektänderung und Umleitung auf ein anderes JSPs geschieht) und nicht sobald eine neue Session erzeugt wurde.

Kann ich über eine Eigenschaft in der FacesContext oder ähnliches festlegen dass sobald eine neue Session erzeugt wurde, auch alle zugehörigen Beans sofort erzeugt werden?

Meine Umgebung:
Windows 7 RC1 64bit
IceFaces 1.8.1
JSF 1.2
Tomcat 6.0

Grüße
- Daniel
 
Hallo,

Kann ich über eine Eigenschaft in der FacesContext oder ähnliches festlegen dass sobald eine neue Session erzeugt wurde, auch alle zugehörigen Beans sofort erzeugt werden?
nein, das geht nicht wirklich. Also zumindest ist es bei JSF nicht vorgesehen.

Ohne dir da jetzt allzuweit vorgreifen zu wollen - kannst du nicht einfach die Beans (ItemBean, MemberBean etc.) als ValueChangeListener bei der Komponente der Oberfläche registrieren, wo du das Projekt änderst?


Grüße
THMD
 
Das Projekt wird über einen Button gewählt. WIrd also nicht unbedingt gehen.
Am besten füge ich einen HttpSessionListener hinzu. In dieser Suche ich einfach alle Instanzen einer Basisklasse (BaseBean) und rufe eine init Methode auf. Wenn ich über den FacesContext dann die ValueBindings auflöse sollten eigentlich alle Instanzen erzeugt werden.

Ich gebe Bescheid ob es funktioniert hat.
 

Neue Beiträge

Zurück