Seam con scope di sessione svanisce componenti a richiesta successiva
-
08-10-2019 - |
Domanda
Ho la componente di sessione con scope Seam, CustomIdentity che sostituisce il Seam Identity standard (anche session-ambito). Il CustomIdentity esteso ha una proprietà
@Out(required=false, scope=ScopeType.SESSION)private User user
Nel login sovresposta () definisco un oggetto d'uso, popolato con le informazioni dal Preside della HttpServletRequest. Nella prima richiesta nella domanda l'oggetto utente viene messo in outjection come previsto in ambito sessione. Nella seconda richiesta, però, l'oggetto utente è scomparsa dalla sessione, e quando visito una pagina che l'inietta, ottengo un'eccezione.
La mia domanda è quando esattamente il componente viene messo in outjection:
- Dopo tutti e ciascuno metodo del componente CustomIdentity (anche se non contiene un riferimento di
user
)? - Dopo ogni metodo che contiene un riferimento della componente utente?
E circa l'attributo required
:
- Se su dell'outjection le Esamina dell'oggetto utente
null
, sta per essere rimosso dal campo di applicazione della sessione utente già messo in outjection?
Cheers!
Soluzione
Per la tua prima domanda: il componente è oujected dopo ogni metodo CustomIdentity
. Date un'occhiata al corrispondente Seam codice sorgente org.jboss.seam.core.BijectionInterceptor
(Seam 2.2.0). Bijection avviene a componenti, vale a dire, di classe, di livello.
Per la tua seconda domanda: ogni volta che una richiesta di finiture CustomIdentity
, il valore del campo viene messo in outjection. Se si utilizza la proprietà require=false
dell'outjection, il user
che è attualmente messo in outjection nel contesto di sessione può essere annullato con null
.