Eine ManagedBean Instanz pro Page/Session

g4da

Grünschnabel
Hallo zusammen,

ich suche schon seit geraumer Zeit nach einer guten Lösung für folgendes Problem:


Es handelt sich um eine Art Forensystem. Es gibt Themen, die als Objekte in der ManagedBean als Objekt gesetzt werden. Nun kann ein Kommentar verfasst werden. Dieser wird durch eine weitere Page bestätigt. Bestätige ich trage ich die Daten in der DB ein.

Problem:
Öffne ich nun ein zweites Thema und führe das selbe durch gehe aber zurück zum ersten Thema (ohne den letzten bestätigenden Schritt zu tätigen) und bestätige das Kommentar so wird das Kommentar aus dem zweiten Thema veröffentlicht.


Das ist auch logisch, da das Attribut in der Bean ersetzt wird. Nur darf es eben nicht ersetzt werden, sondern muss parallel exisiteren.


Frage:
Gibt es eine Möglichkeit eine Bean mehrmals zu instanzieren, das diese so gesehen parallel nebeneinander laufen?

Wie ist der allgemeine Lösungsansatz für diese Problematik? Ich hatte gedacht, das Kommentar jeweils vorher zu persitieren, die ID auszulesen und dann durch das bestätigen erst freizuschalten? Bedeutet jedoch eine riesige DB-last.

Ich bin dankbar für eure Antworten!

Viele Grüße,

g4da
 
Zuletzt bearbeitet:
hhmm.....also ich würde mir als Ansatz
@stateless und @stateful annotations anschauen.

Falls ich das Problem richtig verstanden hab, müsste man das mit "Sessions" lösen können.
Also @stateful, sodass zur einem Thema ein bestimmter Kommentar/e dazu gehört/en.

Bei @stateless würden dann alle Kommentare unabhängig vom Thema auf eine und das selbe Thema greifen. Mit @stateful kann man eben diese Zuordnung durchführen.

Ich hoffe, es hat dir bisschen geholfen :)
 
Das was Du möchtest, wurde vom Seam-Framework mit der Einführung der Conversation gelöst.

Wenn ich das richtig in Erinnerung habe, kannst Du einem JSF-ManagedBean auch einen Scope verpassen, der genau diese Unterscheidung machen kann (kann mich aber täuschen).

Grüße
gore
 
Zurück