有人能解释一下如何在Spring和Thymeleaf中实现post-redirect-get模式吗?在数据库保存方法上订阅了什么?
@GetMapping("/register")
public String showRegisterForm(Model model) {
model.addAttribute("user", new User());
return "register";
}
@PostMapping
public String processRegisterForm(@Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "register";
} else {
userRepository.save(user); //what subscribes on this?
//how to redirect on e.g. "/login"?
}
}发布于 2018-11-25 12:27:36
可以使控制器方法返回如下所示的反应性类型:
@PostMapping
public Mono<String> processRegisterForm(@Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return Mono.just("register");
} else {
return userRepository.save(user).thenReturn("redirect:/login");
}
}发布于 2018-11-25 21:29:54
为了记录在案,我推荐Brian编写的解决方案,因为它更好地表达了意图。然而,如果你想给你的朋友留下深刻印象。这里有些没有if语句。
@PostMapping
public Mono<String> processRegisterForm(@Valid User user, BindingResult bindingResult) {
return Mono
.just(bindingResult.hasErrors())
.filter(t -> t)
.flatMap( t-> Mono.just("register"))
.switchIfEmpty(userRepository.save(user).thenReturn("redirect:/login"));
}https://stackoverflow.com/questions/53466751
复制相似问题