2010-06-08 3 views
3

Следующий код возвращает нуль:Использование сеанса контекстного Bean

AController.java 

    private MyAppUser getMyAppUser(HttpSession session) { 
     MyAppUser myAppUser = (MyAppUser) session.getAttribute("myAppUserManager"); 
     return myAppUser; 
    } 

Я также попытался это:

AController.java 

@Autowired 
MyAppUser myAppUser; 

Несмотря на то, что я следующий в моем контексте:

<bean id="myAppUserManager" class="com.myapp.profile.MyAppUser" scope="session"/> 

Это не имеет для меня никакого смысла, bean bean bean bean be be be be be an bean, который абсолютно никогда не может быть нулевым, и мне нужно быть abl e, чтобы ссылаться на нее с контроллеров, я не нуждаюсь в ней в службах или репозиториях, просто контроллерах, но, похоже, она не хранится в сеансе, прецедент чрезвычайно прост, но я не смог дошли до того, что не так, или придумайте хорошее обходное решение.

ответ

2

Бонусы с сессией не доступны на сеансе. Весна управляет ими и хранит их в сеансе, но не так, что вы можете вручную их выловить.

Если вы хотите использовать фасоль, вы подключите ее к другим фасолям, как и любой другой компонент. Однако есть кое-что, на что можно обратить внимание - см. here. По сути, если вы хотите подключить bean-компонент с сессионным контуром A к bean-компоненту B, тогда bean B также должен быть областью с областью действия (или областью запроса), , если только вы не используете scoped-proxies - см. Предыдущую ссылку для получения информации о том, как это сделать что.

+0

Код, который я связал, находится в аннотированном контроллере, поэтому я не могу ссылаться в свойствах в конфигурации, как в документации, на которую вы ссылаетесь. Фактически, я уже просмотрел эту документацию. Мне нужен этот объект и в каждом контроллере, поэтому я не собираюсь преобразовывать все это в формат XML. Я также попробовал autowiring «myAppUser», который не прошел с исключением при развертывании, является ли контроллер не сеансом или запросом? Я считаю, что трудно поверить. – walnutmon

+0

@jboyd: Контроллеры по умолчанию имеют одинарную область, как и любой другой компонент. Кроме того, вам не нужно вводить контроллеры в XML - в XML должен быть определен только фрагментированный компонент, в котором определяется ''. – skaffman

Смежные вопросы