Seam session scope Vanishes composants dans la requête suivante
-
08-10-2019 - |
Question
J'ai la composante scope de session Seam, CustomIdentity qui remplace la norme Seam Identity (également scope de session). Le CustomIdentity étendu possède une propriété
@Out(required=false, scope=ScopeType.SESSION)private User user
Dans la connexion surchargée () je définir un objet utilisateur, avec des renseignements du directeur de l'HttpServletRequest. Dans la première requête dans l'application de l'objet utilisateur est outjected comme prévu une portée SESSION. Dans la deuxième demande, cependant, l'objet utilisateur a disparu de la session, et quand je visite une page qui Injecte, je reçois une exception.
Ma question est quand exactement le composant est outjected:
- Après chaque une méthode du composant CustomIdentity (même si elle ne contient pas de référence de
user
)? - Après chaque procédé qui contient une référence de la composante de l'utilisateur?
Et sur l'attribut required
:
- Si sur outjection l'objet utilisateur à evalue
null
, est déjà outjected utilisateur va être retiré du champ de session?
Vive!
La solution
Pour votre première question: le composant est oujected après chaque méthode de CustomIdentity
. Jetez un coup d'oeil au code source Seam correspondant org.jboss.seam.core.BijectionInterceptor
(Seam 2.2.0). Bijection a lieu au composant, à savoir, classe, niveau.
Pour votre deuxième question: chaque fois qu'une demande de finitions CustomIdentity
, la valeur de votre champ est outjected. Si vous utilisez la propriété outjection require=false
, le user
qui est actuellement outjected dans votre contexte de session peut être remplacée par null
.