3.springmvc入参的装备规则(模型映射)
model modelMap
@Controller public class BookController { @RequestMapping(value="/book",method=RequestMethod.POST) public ModelAndView method2(HttpServletRequest request, @RequestParam(name="title")String title,Book book, Model model,ModelMap modelMap){ System.out.println(request.getParameter("title")); System.out.println(title); System.out.println(book); System.out.println(model.asMap().get(title)); System.out.println(modelMap.get("title")); ModelAndView mv = new ModelAndView(); mv.setViewName("/comm/book"); return mv; } }
测试:

结果:

-----------------------
title变为book
@RequestMapping(value="/book",method=RequestMethod.POST) public ModelAndView method2(HttpServletRequest request, @RequestParam(name="title")String title,Book book, Model model,ModelMap modelMap){ System.out.println(request.getParameter("title")); System.out.println(title); System.out.println(book); System.out.println(model.asMap().get("book")); System.out.println(modelMap.get("book")); ModelAndView mv = new ModelAndView(); mv.setViewName("/comm/book"); return mv; }
结果:

------------------------
@RequestMapping(value="/book",method=RequestMethod.POST) public ModelAndView method2(HttpServletRequest request, @RequestParam(name="title")String title, Book book,Book book1,@ModelAttribute Book book2, Model model,ModelMap modelMap){ System.out.println(request.getParameter("title")); System.out.println(title); System.out.println(book); System.out.println(book1); System.out.println(book2); ModelAndView mv = new ModelAndView(); mv.setViewName("/comm/book"); return mv; }
结果:

---------------------------------------
@RequestMapping(value="/book",method=RequestMethod.POST) public ModelAndView method2(HttpServletRequest request, @RequestParam(name="title")String title, Book book,Book book1,@ModelAttribute Book book2, Model model,ModelMap modelMap){ System.out.println(request.getParameter("title")); System.out.println(title); System.out.println(model.asMap().get("book1")); System.out.println(modelMap.get("book2")); ModelAndView mv = new ModelAndView(); mv.setViewName("/comm/book"); return mv; }
结果:

重难点:模型映射
//共同的接口 Map
org.springframework.ui.Model; -> 接口 注值
org.springframework.ui.ModelMap; -> 类 注值
//在注值的处理上是同步的
org.springframework.web.servlet.ModelAndView -> 类 (注值并转发)
//Model接口对象可以转换为ModelMap
Model model -> model.asMap(); -> ModelMap
//ModelAndView对象可以转换为ModelMap
ModelAndView -> mv.getModelMap() -> ModelMap
理论:
1.初始化对象参数 (可省略)
@ModelAttribute Book book2 -> model.addAttribute("book", new Book());
book2 = model.asMap().get("book");
原理:
[参数]类声明
首先将类进行反射,获取对象(属性都为初始值一般为null),
接着 通过表单请求参数对属性进行注值(不匹配忽略)
最后 Model.getMap modelMap -> put(key[类名首字母小写],value[反射并注值结果])
规则:
获取对象 -> Map<String,Object>
model.asMap().get("book")
modelMap.get("book")
Book book1 = modelMap.get("book");
细节:
时间格式处理
1.自定义格式转换器 -> 网络查找
2.日期字段改为String -> 保证格式正确
3.日期表单独立处理 -> 避免自动装载

浙公网安备 33010602011771号