首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Spring WebFlux和Thymeleaf重定向

用Spring WebFlux和Thymeleaf重定向
EN

Stack Overflow用户
提问于 2018-11-25 10:54:39
回答 2查看 826关注 0票数 2

有人能解释一下如何在Spring和Thymeleaf中实现post-redirect-get模式吗?在数据库保存方法上订阅了什么?

代码语言:javascript
复制
@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"?
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-25 12:27:36

可以使控制器方法返回如下所示的反应性类型:

代码语言:javascript
复制
@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");
    }
}
票数 2
EN

Stack Overflow用户

发布于 2018-11-25 21:29:54

为了记录在案,我推荐Brian编写的解决方案,因为它更好地表达了意图。然而,如果你想给你的朋友留下深刻印象。这里有些没有if语句。

代码语言:javascript
复制
@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"));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53466751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档