我的UserController.java
@Controller
@RequestMapping("/userRegistration")
public class UserController{
@RequestMapping(method = RequestMethod.GET)
public String showForm(ModelMap model) {
User user = new User();
model.addAttribute(user);
return "userForm";
}
@RequestMapping(method = RequestMethod.POST)
public String onFormSubmit(@ModelAttribute("user") User user) { // **#1**
return "redirect:userSuccess.htm"; // **#2**
}
}
我的SuccessController.java
@Controller
public class SuccessController {
@RequestMapping("/userSuccess.htm")
public String getSuccessPage(@ModelAttribute("user") User user){ // **#3**
return "userSuccess";
}
}
我未在"user"
中获得SuccessController
模型,所以当我在${user.name}
中使用userSuccess.jsp
时,我没有任何价值。
当我在第1行设置用户模型时,为什么不在另一个控制器中获取此值?如果我使用@SessionAttributes
将此模型保存在Session中,我可以在另一个控制器中访问它。
那么使用@ModelAttribute
形成的模型的范围是什么?
答案 0 :(得分:3)
它在请求中,除非使用@SessionAttributes
described here进行修改。 (Delta其他情况described here。)您正在进行重定向 - 请求属性丢失;这是一个新的要求。
您在文中回答了自己的问题:当您将其保持在会话中时,它可以跨控制器和重定向使用,因为它在会话中。如果你没有把它保持在会话中,那就不是。