【发布时间】:2021-08-29 03:56:27
【问题描述】:
在控制器中,我保存了对象。 saveOrUpdateUser 方法返回单声道。但重定向比将对象保存到数据库要快。由于我没有在发生重定向的另一种方法中获取此对象。
@PostMapping("users/{id}")
public String saveOrUpdateUser(User user, Model model) {
Mono<User> userDb;
if (user.getId() == null) {
userDb = userService.registerUser(user);
} else {
userDb = userService.update(user);
}
userDb.subscribe();
return "redirect:/admin/users";
}
重定向到:
@GetMapping("users")
public String getAllUser(Model model) {
Flux<User> all = userService.findAll().sort(Comparator.comparingLong(User::getId));
IReactiveDataDriverContextVariable reactiveDataDrivenMode =
new ReactiveDataDriverContextVariable(all, 1,1);
model.addAttribute("users", reactiveDataDrivenMode);
return "usermainpage";
【问题讨论】:
-
您是否可以选择在控制器的方法 saveOrUpdateUser 上返回 Mono
而不是 String?如果可以的话,你可以使用 Mono 上的 then 方法。如果不能,可以使用 userDb mono 上的方法块,这将等待执行完成 -
谢谢。我会尝试“ return userDb.flatMap(u->{ return Mono.just("redirect:/admin/users"); }); "
-
不客气!测试后告诉我它是否有效
-
是的,它有效)
-
你介意我把我的 cmets 作为问题的答案吗?
标签: spring-boot thymeleaf spring-webflux