繁体   English   中英

重定向在 Spring 控制器中不起作用

[英]redirect doesn't work in the Spring controller

这里是一个注册字段,注册后应该进入菜单页面,但它进入主页面

@Controller
@RequestMapping("/main")
public class SignInPageController {

    private UserDao userDao;
@Autowired
    public SignInPageController(UserDao userDao){this.userDao = userDao;}

@GetMapping("/menu")
    public String mainMenuPage(){
        return "main/menu";
    }
@GetMapping("/signup")
    public String signUpPage(Model model){
        model.addAttribute("newuser", new User());
        return "main/signup";
    }
@PostMapping("/signup")
    public String signUp(@RequestParam("name") String name,
                             @RequestParam("password") String password,
                             @RequestParam("email") String email,
                             @RequestParam("nativeLanguage") String nativeLanguage){
        User user = new User(name, password, email, nativeLanguage);
        userDao.signUpUser(user);
        return "redirect:/main/menu";
    }

你能告诉我是什么问题吗?

看起来您在SignInPageController类上缺少@Controller Spring 注释。

所以你应该得到这样的东西:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
// And your other imports...

@Controller
@RequestMapping("/main")
public class SignInPageController {

    private UserDao userDao;

    @Autowired
    public SignInPageController(UserDao userDao){this.userDao = userDao;}

    @GetMapping("/menu")
    public String mainMenuPage(){
        return "main/menu";
    }

    @GetMapping("/signup")
    public String signUpPage(Model model){
        model.addAttribute("newuser", new User());
        return "main/signup";
    }

    @PostMapping("/signup")
    public String signUp(@RequestParam("name") String name,
                             @RequestParam("password") String password,
                             @RequestParam("email") String email,
                             @RequestParam("nativeLanguage") String nativeLanguage){
        User user = new User(name, password, email, nativeLanguage);
        userDao.signUpUser(user);
        return "redirect:/main/menu";
    }
}

所以正如我在评论中所说:

您应该从控制器的方法中返回一个ModelAndView类型,返回值如:

return new ModelAndView("redirect:/main/menu", model);

正如您所提到的,您还遇到了重定向不正确的问题,请尝试使用定义的常量来避免拼写错误:)

如果您是 Spring 的flashAttributes ,请务必查看RedirectAttributes ,添加flashAttributes ,并查看有关 Baeldung 的文档,它真的很完整。

祝你好运 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM