Seam Session scoped Komponente verschwindet in der nächsten Anfrage
-
08-10-2019 - |
Frage
Ich habe die Naht Session-scoped Komponente, CustomIdentity, die die Standard-Naht Identität überschreibt (auch Session-scoped). Die erweiterte CustomIdentity hat eine Eigenschaft
@Out(required=false, scope=ScopeType.SESSION)private User user
In der überschriebenen login () Ich definiere ein Objekt Benutzer, bevölkert mit Informationen aus dem Rektor der HttpServletRequest. In der ersten Anforderung in der Anwendung wird das Benutzerobjekt wie erwartet in Sitzungsbereich outjected. In der zweiten Anfrage aber hat das Benutzerobjekt aus der Session verschwunden, und wenn ich eine Seite besuchen, dass verleibt sie, erhalte ich eine Ausnahme.
Meine Frage ist, wann genau die Komponente outjected ist:
- Nach jeder ein Verfahren der CustomIdentity Komponente (auch wenn es nicht einen Verweis von
user
enthält)? - Sie nach jeder Methode, die eine Referenz der Benutzerkomponente enthält?
Und über das required
Attribut:
- Wenn auf outjection des User-Objekt auswertet zu
null
, ist die bereits outjected Benutzer gehen von Sitzungsbereich entfernt werden?
Cheers!
Lösung
Um Ihre erste Frage: die Komponente nach jedem Verfahren von CustomIdentity
oujected. Werfen Sie einen Blick auf die entsprechende Naht Quellcode org.jboss.seam.core.BijectionInterceptor
(Seam 2.2.0). Bijection erfolgt bei Komponente, das heißt Klasse, Stufe.
Um Ihre zweite Frage: jedes Mal, wenn eine Anfrage an CustomIdentity
beendet ist, wird der Wert des Feldes outjected. Wenn Sie die Eigenschaft outjection require=false
verwenden, die user
die derzeit in Ihrem Sitzungskontext outjected durch null
außer Kraft gesetzt werden kann.