spring 形式的欢迎页面
Welcome page in spring form
为什么我们在使用 Spring Form 时在 Controller class 的 showForm() 方法中返回 ModelAndView。
@Controller
public class EmployeeController {
@RequestMapping(value = "/employee", method = RequestMethod.GET)
public ModelAndView showForm() {
return new ModelAndView("employeeHome", "employee", new Employee());
}
@RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
public String submit(@Valid @ModelAttribute("employee")Employee employee,
BindingResult result, ModelMap model) {
if (result.hasErrors()) {
return "error";
}
model.addAttribute("name", employee.getName());
model.addAttribute("contactNumber", employee.getContactNumber());
model.addAttribute("id", employee.getId());
return "employeeView";
}
}
如果您 return 来自控制器方法的字符串,其值将被视为您要向用户显示的视图的名称。在呈现视图时,数据取自 Model 或 ModelMap 实例,您将其作为参数传递给方法并在方法主体中填充数据。
model.addAttribute("name", employee.getName());
model.addAttribute("contactNumber", employee.getContactNumber());
model.addAttribute("id", employee.getId());
return "employeeView";
但是,如果您 return ModelAndView,则视图的名称以及呈现视图所需的数据都取自单个 returned 实例。
return new ModelAndView("employeeHome", "employee", new Employee());
在这里你 return 一个 ModelAndView 的实例,它带有视图的名称 ('employeeHome') 和由名为 'employee' 的属性中的 Employee 对象表示的数据。
每个选项的使用差异不大,所以请使用您觉得更方便的选项。
您也可以查看这篇文章以获得更清晰的理解:
https://www.baeldung.com/spring-mvc-model-model-map-model-view
为什么我们在使用 Spring Form 时在 Controller class 的 showForm() 方法中返回 ModelAndView。
@Controller
public class EmployeeController {
@RequestMapping(value = "/employee", method = RequestMethod.GET)
public ModelAndView showForm() {
return new ModelAndView("employeeHome", "employee", new Employee());
}
@RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
public String submit(@Valid @ModelAttribute("employee")Employee employee,
BindingResult result, ModelMap model) {
if (result.hasErrors()) {
return "error";
}
model.addAttribute("name", employee.getName());
model.addAttribute("contactNumber", employee.getContactNumber());
model.addAttribute("id", employee.getId());
return "employeeView";
}
}
如果您 return 来自控制器方法的字符串,其值将被视为您要向用户显示的视图的名称。在呈现视图时,数据取自 Model 或 ModelMap 实例,您将其作为参数传递给方法并在方法主体中填充数据。
model.addAttribute("name", employee.getName());
model.addAttribute("contactNumber", employee.getContactNumber());
model.addAttribute("id", employee.getId());
return "employeeView";
但是,如果您 return ModelAndView,则视图的名称以及呈现视图所需的数据都取自单个 returned 实例。
return new ModelAndView("employeeHome", "employee", new Employee());
在这里你 return 一个 ModelAndView 的实例,它带有视图的名称 ('employeeHome') 和由名为 'employee' 的属性中的 Employee 对象表示的数据。
每个选项的使用差异不大,所以请使用您觉得更方便的选项。
您也可以查看这篇文章以获得更清晰的理解: https://www.baeldung.com/spring-mvc-model-model-map-model-view