Spring mvc @ModelAttribute形成的模型不能在其他控制器中使用
My UserController.javaSpring mvc @ModelAttribute形成的模型不能在其他控制器中使用,spring-mvc,spring-annotations,modelattribute,Spring Mvc,Spring Annotations,Modelattribute,My UserController.java @Controller @RequestMapping("/userRegistration") public class UserController{ @RequestMapping(method = RequestMethod.GET) public String showForm(ModelMap model) { User user = new User(); model.addAttrib
@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**
}
}
@Controller
public class SuccessController {
@RequestMapping("/userSuccess.htm")
public String getSuccessPage(@ModelAttribute("user") User user){ // **#3**
return "userSuccess";
}
}
My SuccessController.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**
}
}
@Controller
public class SuccessController {
@RequestMapping("/userSuccess.htm")
public String getSuccessPage(@ModelAttribute("user") User user){ // **#3**
return "userSuccess";
}
}
我没有在SuccessController
中获得“user”
模型,因此当我在userSuccess.jsp
中使用${user.name}
时,我没有得到任何值
当我在第1行设置用户模型时,为什么不在另一个控制器中获取该值?如果我使用@SessionAttributes
将此模型保持在会话中,我可以在另一个控制器中访问它
那么,使用
@modeldattribute
形成的模型的范围是什么?它在请求中,除非使用@SessionAttributes
作为修改。(其他情况除外)您正在执行重定向--请求属性丢失;这是一个新的要求
您在文本中回答了自己的问题:当您保持会话时,它可以跨控制器和重定向使用,因为它在会话中。如果你不把它保持在会话中,它就不是