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.日期表单独立处理 -> 避免自动装载

 

posted @ 2020-12-07 19:26  檐下赏雨  阅读(110)  评论(0)    收藏  举报