我正在尝试使用Spring WebFlux5.0.1和Spring boot v2.0 M6版本开发Web应用程序。要求是在会话中存储对象并在后续页面/控制器中使用它。
控制器
@Controller
public class TestController {
@RequestMapping("/")
public Mono<String> testSession(Model model,ServerWebExchange swe){
Mono<WebSession> session = swe.getSession();
System.out.println("In testSession "+session);
model.addAttribute("account", new Account());
return Mono.just("account");
}
}
我能从ServerWebExchange获取Websession对象,但我没有看到设置/获取属性的方法
需要帮助以了解如何在被动世界中使用WebSession对象
答案 0 :(得分:0)
这是你想做的吗?
swe.getSession().map(
session -> {
session.getAttribute("foo"); // GET
session.getAttributes().put("foo", "bar") // SET
}
);
答案 1 :(得分:0)
在我看来,可接受的解决方案是不完整的,因为它没有显示整个控制器方法,这是如何实现的方法:
@PostMapping("/login")
fun doLogin(@ModelAttribute credentials: Credentials, swe: ServerWebExchange): Mono<String> {
return swe.session.flatMap {
it.attributes["userId"] = credentials.userId
"redirect:/globalPosition".toMono()
}
}