如何从HttpSession而不是会话中注入一个值

问题描述 投票:0回答:1

当使用spring MVC时,通过将HttpSession session添加到方法的签名中,将HttpSession传递给方法真的很容易,之后你可以做类似的事情。

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填充的类。有没有办法做到这一点?

java spring spring-mvc httpsession
1个回答
0
投票

您可以将@SessionAttribute与spring MVC一起使用,它将从session中检索现有属性,更多请参阅here

@GetMapping("/something")
public String foo(@SessionAttribute("key1") Integer key1, @SessionAttribute("key2") Integer key2) {
    return someMethod(key1, key2);
}
© www.soinside.com 2019 - 2024. All rights reserved.