【发布时间】:2021-01-17 13:08:45
【问题描述】:
这里是一个注册字段,注册后应该是进入菜单页面,但是进入主页面
@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";
}
你能告诉我问题是什么吗?
【问题讨论】:
-
我真的不明白预期的行为是什么:你所说的“注册”是什么?您希望用户完成注册,然后将他重定向到主菜单?顺便说一句,你为什么返回 String 类型而不是 ModelAndView 类型?而且在我看来,你应该避免在你的代码中使用这样写的常量,如果它们被重复,它会更难维护!
-
是的,预期的行为是将用户添加到数据库并转到主菜单页面。你是说我应该将模型传递给我的 mainMenuPage 方法吗?
-
那么你有没有试过在每个方法中设置断点来查看它在哪里着陆?是的,尝试将“signUp”的返回类型从 String 更改为 ModelAndView 并返回,例如 return new ModelAndView("redirect:/main/menu", model);
-
但是模型是另一回事,首先你应该确保你的路径是正确的,然后我们会检查你的redirectAttributes和你需要的数据是否存在于你的RequestMapping的每个方法中
-
我通过向控制器方法添加模型解决了重定向问题(以及更正了 html 视图上的错误 - 表单中动作参数的路径指定不正确)。非常感谢,您可以将您的评论标记为答案吗?)
标签: java spring redirect model-view-controller controller