model = new ModelAndView("addEmployee", "employeeForm", employee);
您自己在代码中销毁了模型,因此当返回页面时基本上什么也没有留下。退货时ModelAndView
Spring MVC 假设您已经准备好并添加了自己渲染视图所需的所有内容。
相反添加@ModelAttribute("employeeForm")
到你的方法参数旁边@Valid
注释并使用现有的模型BindingResult
构建一个ModelAndView
.
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView postUser(@Valid @ModelAttribute("employeeForm" Employee employee, BindingResult result) {
ModelAndView model;
if (result.hasErrors()) {
model = new ModelAndView("addEmployee", result.getModel());
虽然这可行,为什么不简单地返回一个String
作为视图的名称并做一些Model
需要时的准备。
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String postUser(@Valid @ModelAttribute("employeeForm") Employee employee, BindingResult result, Model model) {
if (result.hasErrors()) {
return "addEmployee";
} else {
employeeService.addEmployee(employee);
model.addObject("employees", employeeService.getEmployees());
return "displayEmployee";
}
}
我什至认为填写Model
为了displayEmployee
页面不属于此处,而是在为该页面准备模型的单独方法中。