spring 中模型与模型和视图之间的区别
Difference between model and modelandview in spring
我有一个方法将@modelattribute 作为参数并返回模型和视图对象,如下所示
@RequestMapping(value = "/pathtorequest", method = RequestMethod.POST)
public ModelAndView redirectdemo( HttpServletRequest req,@ModelAttribute(value="demo") Employee e) {
ModelAndView m=new ModelAndView("result");
Map<String,Object> map=m.getModel();
for(String s:map.keySet()){
System.out.println("key::"+s+" value::"+map.get(s));
}
return m;
}
foreach 循环未打印任何内容,而对象已添加到名称为 demo 的模型。
在作为结果的视图页面中,我在 requestScope 中获取 modelattribute 的值。
为什么对象演示没有添加到模型图中?演示不是模型对象吗?
因为,虽然 Employee 对象是通过 @ModelAttribute 注解参数添加的,但是您随后使用以下行创建了一个全新的 ModelAndView
ModelAndView m=new ModelAndView("result");
然后迭代只包含视图名称(即 "result")但不包含模型的 m。
当您 return 一个 modelAndView 时,Spring 将向其添加由 @ModelAttribute 注释创建的所有其他模型属性。
如果您想在您的方法中操纵模型,请将其添加为参数:
@RequestMapping(value = "/pathtorequest", method = RequestMethod.POST)
public ModelAndView redirectdemo( HttpServletRequest req,@ModelAttribute(value="demo") Employee e, ModelMap modelMap) {
for(String s : modelMap.keySet()){
System.out.println("key::"+s+" value::"+modelMap.get(s));
}
}
我有一个方法将@modelattribute 作为参数并返回模型和视图对象,如下所示
@RequestMapping(value = "/pathtorequest", method = RequestMethod.POST)
public ModelAndView redirectdemo( HttpServletRequest req,@ModelAttribute(value="demo") Employee e) {
ModelAndView m=new ModelAndView("result");
Map<String,Object> map=m.getModel();
for(String s:map.keySet()){
System.out.println("key::"+s+" value::"+map.get(s));
}
return m;
}
foreach 循环未打印任何内容,而对象已添加到名称为 demo 的模型。
在作为结果的视图页面中,我在 requestScope 中获取 modelattribute 的值。
为什么对象演示没有添加到模型图中?演示不是模型对象吗?
因为,虽然 Employee 对象是通过 @ModelAttribute 注解参数添加的,但是您随后使用以下行创建了一个全新的 ModelAndView
ModelAndView m=new ModelAndView("result");
然后迭代只包含视图名称(即 "result")但不包含模型的 m。
当您 return 一个 modelAndView 时,Spring 将向其添加由 @ModelAttribute 注释创建的所有其他模型属性。
如果您想在您的方法中操纵模型,请将其添加为参数:
@RequestMapping(value = "/pathtorequest", method = RequestMethod.POST)
public ModelAndView redirectdemo( HttpServletRequest req,@ModelAttribute(value="demo") Employee e, ModelMap modelMap) {
for(String s : modelMap.keySet()){
System.out.println("key::"+s+" value::"+modelMap.get(s));
}
}