Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc @ModelAttribute形成的模型不能在其他控制器中使用_Spring Mvc_Spring Annotations_Modelattribute - Fatal编程技术网

Spring mvc @ModelAttribute形成的模型不能在其他控制器中使用

Spring 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

My 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**
    }

}
@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
作为修改。(其他情况除外)您正在执行重定向--请求属性丢失;这是一个新的要求

您在文本中回答了自己的问题:当您保持会话时,它可以跨控制器和重定向使用,因为它在会话中。如果你不把它保持在会话中,它就不是