Область применения приложения Spring-mvc 3.0 - PullRequest
5 голосов
/ 21 февраля 2011

При использовании левого меню я не перенаправляю на другую страницу, а использую href для ссылки на другие страницы.Но при этом моя область сеанса, ограниченная запросом, больше не существует.Итак, вот мой код контроллера:

Установка сеанса:

request.getSession(true).setAttribute("application", application);

Получение объекта сеанса в другом контроллере:

HttpSession session = request.getSession();
session.getAttribute("application"); //application null in href; redirect works fine

Так есть ли способ, которым я могуиспользуйте область сеанса «application» в Spring MVC 3. Чтобы у меня был доступ к сеансу через мое приложение.

Я попробовал этот фрагмент кода в моем application-servlet.xml

<!-- a HTTP Session-scoped bean exposed as a proxy --> 
<bean id="applicationVO" class="com.nypd.viewobjects.ApplicationVO" scope="globalSession"> 
<!-- this next element effects the proxying of the surrounding bean --> 
<aop:scoped-proxy/> 
</bean> 

Я ввожу объект для установки и извлечения простого компонента, как показано ниже:

@Autowired private ApplicationVO applicationVO;

что я здесь не так делаю?

Я также пытался @SessionAttribute на контроллере @SessionAttributes("applicationVO") но кажется, что проблема все еще существует.

Я буду очень признателен, если кто-нибудь сможет предоставить мне небольшой пример с двумя контроллерами.

Ответы [ 2 ]

12 голосов
/ 21 февраля 2011

Прочитайте ссылку для определенных областей действия боба . Вот они:

bean scopes

Итак, что вы обычно делаете, это определяете боб и регистрируете его в области действия session. Теперь вы можете вводить его где угодно. См. объяснение здесь , но остерегайтесь этой проблемы (одноэлементные объекты с не-одноэлементными зависимостями).


Или вы можете использовать механизм @SessionAttributes для хранения и извлечения произвольных данных сеанса из ваших контроллеров. См. ссылку здесь .

Справка:

1 голос
/ 13 сентября 2012

@ Атрибут сеанса не хранит данные в области сеанса. Он хранит данные в области диалога, которая больше, чем запрос, но меньше, чем сеанс. Spring управляет этой областью для диалога (который охватывает несколько запросов) и удаляется после завершения диалога

Чтобы сохранить ваш bean-компонент в области действия сеанса, вам нужно объявить requestContextListner в вашем spring-context.xml, который предоставит запрос текущему потоку

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