[英]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.