如何使用 WebFlux 设置重定向
Posted
技术标签:
【中文标题】如何使用 WebFlux 设置重定向【英文标题】:how to set redirect using WebFlux 【发布时间】: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如果您可以选择将控制器方法 saveOrUpdateUser 的返回类型更改为 Mono,您可以使用 Mono 的 flatMap 方法返回重定向字符串,如:
return userDb.flatMap((data) -> Mono.just("redirect:/admin/users"));
如果你不能改变返回类型,你可以使用mono的block方法等待用户db执行完成。
【讨论】:
以上是关于如何使用 WebFlux 设置重定向的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 301 重定向而不是 302 将 HTTP 站点重定向到 HTTPS 站点