Подтвердить что ты не робот

Установить переменную сеанса spring mvc 3

Как установить объект сеанса, который я могу использовать в любом из моих представлений, используя ${variable} или ${requestScope.variable}

Чтобы иметь возможность использовать сеансы, мне нужно установить <%@ page session="true" %>?

4b9b3361

Ответ 1

Если вы хотите получить доступ к переменной сеанса в своем представлении, самый простой способ сделать это:

${sessionScope.yourVariable} 

Подробнее см. Использование объектов области видимости.

Если вы установите <%@ page session="true">, то JSP объединит область сеанса и в области страницы в одно пространство имен. Затем вы можете сделать:

${yourVariable}

Вы можете поместить что-то в сеанс в контроллере mvc следующим образом:

@RequestMapping("/test")
@Controller
public class TestController {
    @RequestMapping(method = RequestMethod.GET)
    public String testMestod(HttpServletRequest request)
    {
        request.getSession().setAttribute("testVariable", "Test Values!!");
        return "testJsp";
    }
}

Наконец, атрибут @SessionAttribute предназначен для использования в конкретном случае и не помещает переменные в сеанс, чтобы каждый мог получить к ним доступ:

Вот как люди spring описывают функциональность @SessionAttribute:

Функция @SessionAttributes работает в так же, как sessionForm SimpleFormController. Он ставит команда (или для атрибутов @SessionAttributes любой объект) в сеансе для продолжительность между первым и последний запрос (в большинстве случаев начальный GET и окончательный POST). После что материал удален.

У каждого контроллера есть собственная модель поэтому что-то @SessionAttributes в контроллере1 недоступен в контроллере2 и наоборот. Для этого вы будете нужно положить материал на сеанс вручную самостоятельно.

Ответ 2

Используйте аннотацию SessionAttributes. Ознакомьтесь с документацией spring здесь

Вы также можете вручную добавлять и удалять переменные из сеанса с помощью DefaultSessionAttributeStore api