Передача атрибута ModelAttribute по нескольким запросам в Spring MVC

#session #spring-mvc

#сессия #spring-mvc

Вопрос:

У меня есть форма поиска по нескольким критериям с атрибутом command. При первой отправке результаты получаются на основе параметров в command object . На странице результатов есть ссылка для экспорта всех результатов в Excel.. Я реализовал это с помощью XMLViewResolver. Мне нужно передать атрибут модели SearchForm контроллеру, который обрабатывает эти запросы на экспорт. Кроме того, на странице результатов поиска пользователь может щелкнуть профиль пользователя и снова вернуться к результатам поиска. Я хочу сохранить атрибуты этой модели в сеансе для всех этих запросов. Как бы я добился этого в Spring MVC? @sessionAttributes, вероятно, не вариант, потому что, как я понимаю, как только запрос отправляется на другой контроллер, этот объект сбрасывается.

Ответ №1:

Вы можете сохранить любой объект, который вы хотели бы (модель поисковой формы) в сеансе, связанном с HttpRequest через request.getSession();

Это позволит вам получить доступ к вашей модели из сеанса во всех контроллерах.

Вы также можете сохранить критерии в виде скрытых полей формы в форме, отвечающей за действие пользователя. Например, когда пользователь нажимает «Экспортировать в Excel», кнопка будет содержаться в форме, которая содержит скрытые поля формы, значения которых задаются из предыдущего компонента SearchForm.