Как ввести значение из HttpSession вместо сеанса - PullRequest
0 голосов
/ 13 апреля 2019

При использовании Spring MVC действительно легко передать HttpSession методу, просто добавив HttpSession session к сигнатуре метода, и позже вы можете сделать что-то вроде

Integer valueFromSession = (Integer) session.getAttribute("key1")
Integer anotherValueFromSession = (Integer) session.getAttribute("key2")

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

@GetMapping("/something")
public String foo(HttpSession session) {
    Integer valueFromSession = (Integer) session.getAttribute("key1")
    Integer anotherValueFromSession = (Integer) session.getAttribute("key2")

    return someMethod(valueFromSession, anotherValueFromSession);
}

Я могу иметь:

@GetMapping("/something")
public String foo(HttpSessionData dataFromSession) {

    return someMethod(dataFromSession.getValue(), dataFromSession.getAnotherValue();
}

Где DataFromSession - это класс, который заполняется из HttpSession. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 14 апреля 2019

Вы можете использовать @SessionAttribute с пружинным MVC, он извлечет существующий атрибут из сеанса, подробнее см. здесь

@GetMapping("/something")
public String foo(@SessionAttribute("key1") Integer key1, @SessionAttribute("key2") Integer key2) {
    return someMethod(key1, key2);
}
...