Компонент области сеанса Seam исчезает в следующем запросе - PullRequest
2 голосов
/ 17 октября 2010

У меня есть компонент области сеанса Seam, CustomIdentity, который переопределяет стандартную идентичность Seam (также области сеанса).Расширенный CustomIdentity имеет свойство

@Out(required=false, scope=ScopeType.SESSION)private User user

. В переопределенном логине () я определяю объект User, заполненный информацией из принципала HttpServletRequest.В первом запросе в приложении объект User выводится, как и ожидалось, в области SESSION.Однако во втором запросе объект User исчез из сеанса, и когда я захожу на страницу, которая его внедряет, я получаю исключение.

У меня вопрос, когда именно компонент удаляется:

  • После каждого метода компонента CustomIdentity (даже если он не содержит ссылку user)?
  • После каждого метода, содержащего ссылку на компонент User?

А что касается атрибута required:

  • Если при удалении объект User оценивается как null, будет ли уже удаленный пользователь удален из области действия сеанса?

Ура!

1 Ответ

3 голосов
/ 18 октября 2010

На ваш первый вопрос: компонент выводится после каждого метода CustomIdentity.Взгляните на соответствующий исходный код Seam org.jboss.seam.core.BijectionInterceptor (Seam 2.2.0).Биекция происходит на компоненте, т.е. на уровне класса.

На ваш второй вопрос: каждый раз, когда заканчивается запрос к CustomIdentity, значение вашего поля выводится.Если вы используете свойство outjection require=false, user, которое в настоящее время выводится в контексте сеанса, может быть переопределено на null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...