Java&JAVA EEjava

Model、ModelMap、ModelAndView

2018-08-16  本文已影响170人  PC_Repair
Model与ModelAndView的最大区别:
Model
public class ExtendedModelMap extends ModelMap implements Model

ModelMap
public ModelMap addAttribute(String attributeName, Object attributeValue){...}
public ModelMap addAttribute(Object attributeValue){...}
public ModelMap addAllAttributes(Collection<?> attributeValues) {...}
public ModelMap addAllAttributes(Map<String, ?> attributes){...}

在jsp页面上可以通过el表达式语言$attributeName或者是C标签库下的方法,来获取并展示ModelMap中的数据。
ModelMap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址。


ModelAndView

ModelAndView 对象有两个作用:
(1)设置转向地址,这也是ModelAndView和ModelMap的主要区别。设置方式如下所示:

ModelAndView view = new ModelAndView("path:student");

或者通过setViewName方式:

public void setViewName(String viewName){...}

(2)将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:

public ModelAndView addObject(String attributeName, Object attributeValue){...}
public ModelAndView addObject(Object attributeValue){...}

在jsp页面上可以通过el表达式语言$attributeName或者是C标签库下的方法,来获取并展示ModelAndView中的数据。


使用示例

Model或者ModelMap

//控制层java代码
@RequestMapping("admin_category_list")
    public String list(Model model){
        List<Category> cs = categoryService.list();
        model.addAttribute("cs", cs);
        //服务器跳转到"admin/listCategory"视图
        //“admin/listCategory” 会根据后续的springMVC.xml 配置文件,跳转到 WEB-INF/jsp/admin/listCategory.jsp 文件
        return "admin/listCategory";
    }

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

//jsp页面写入
<!-- 获取值的时候,对应的是addAttribute的第一个参数!取了个别名为c-->
    <c:forEach items="${cs}" var="c">
        <tr>
            <td>${c.id}</td>
            <td>${c.name}</td>
        </tr>
    </c:forEach>

ModelAndView

//控制层java代码
@RequestMapping("admin_category_list")
    public ModelAndView list() {
         //创建一个模型视图对象
        ModelAndView mav = new ModelAndView();
        List<Category> cs = categoryService.list();
        mav.addObject("cs", cs);
        mav.setViewName("admin/listCategory");
        return mav;
    }
//jsp页面写入
<!-- 获取值的时候,对应的是addAttribute的第一个参数!取了个别名为c-->
    <c:forEach items="${cs}" var="c">
        <tr>
            <td>${c.id}</td>
            <td>${c.name}</td>
        </tr>
    </c:forEach>
上一篇 下一篇

猜你喜欢

热点阅读