• Spring框架中ModelAndView、Model、ModelMap区别 (转)


    原文地址:http://www.cnblogs.com/google4y/p/3421017.html

    SPRING框架中ModelAndView、Model、ModelMap区别

     

    注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。

    首先介绍ModelMap[Model]和ModelAndView的作用

    Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。 
    ModelMap
    ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
    addAttribute(String key,Object value);
    在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示modelmap中的数据。
    modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址。

    ModelAndView
    ModelAndView对象有两个作用:
    作用一 设置转向地址,如下所示(这也是ModelAndView和ModelMap的主要区别)
    ModelAndView view = new ModelAndView("path:ok");

    作用二 用于传递控制方法处理结果数据到结果页面,也就是说我们把需要在结果页面上需要的数据放到ModelAndView对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
    addObject(String key,Object value);

    在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示ModelAndView中的数据。

    作用介绍完了后,接下来介绍使用方法


    ModelMap
    ModelMap的实例是由bboss mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建。

    public String xxxxmethod(String someparam,ModelMap model)
    {
         //省略方法处理逻辑若干
          //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
          model.addAttribute("key",someparam);
         ......
         //返回跳转地址
          return "path:handleok";
    }
    



    ModelAndView
    ModelAndView的实例是由用户手动创建的,这也是和ModelMap的一个区别。

    public ModelAndView xxxxmethod(String someparam)
    {
         //省略方法处理逻辑若干
          //构建ModelAndView实例,并设置跳转地址
          ModelAndView view = new ModelAndView("path:handleok");
          //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
          view.addObject("key",someparam);
         ......
         //返回ModelAndView对象view
          return view;
    }
    



    到此bboss mvc中ModelMap和ModelAndView两个对象的作用和使用方法介绍完毕

    如下为我自己写的测试代码

    复制代码
    @RequestMapping(value = "/demo",method = RequestMethod.GET)
        public ModelAndView getBusinessIdListByIp(@RequestParam("ip") String ip,@RequestParam("phoneId") String phoneId,Model model){
            ModelAndView mav = new ModelAndView();
            model.addAttribute("ip", ip);
            model.addAttribute("phoneId", phoneId);
            mav.addObject(model);
            mav.setViewName("user/mav");
            return mav;
        }
        
        @RequestMapping(value = "/demo2",method = RequestMethod.GET)
        public ModelAndView getBusinessIdListByIp(){
            return new ModelAndView("user/mav","key",new String("makeHappy"));
        }
    复制代码
  • 相关阅读:
    用Photoshop设计网站的70个教程
    反射引发的错误“reflection Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.”
    机械键盘理解的几个误区和保养方法
    Asp.Net MVC中不指定View Name时如何返回ActionResult的
    [通告]Nuget服务宕机,出现 503 Server Unavailable 错误无法编译及解决方法
    MVC标签链接切换帮助类: TabLink
    [Centos 6.2] centos 6.2(64位)网络配置
    Linux(Ubuntu)设置环境变量(转载)
    COPYONWRITE 原理
    [Linux 技巧] linux screen 命令详解
  • 原文地址:https://www.cnblogs.com/jiangwz/p/7673748.html
Copyright © 2020-2023  润新知