2

我的 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}in时userSuccess.jsp,我没有得到任何价值。

当我在第 1 行设置用户模型时,为什么我不在另一个控制器中获取此值?如果我将这个模型保存在 Session using 中@SessionAttributes,我可以在另一个控制器中访问它。

那么使用 形成的模型的范围是什么@ModelAttribute

4

1 回答 1

3

它在请求中,除非使用此处描述@SessionAttributes的 a进行修改。(Delta此处描述的其他情况。)您正在执行重定向——请求属性丢失;这是一个新的要求。

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

于 2011-12-27T13:50:36.787 回答