ModelAndView

使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。 

 

具体作用

1. 返回指定页面

通过setViewName()方法跳转到指定的页面。

public void setViewName(String viewName)
public String getViewName()

例如:

ModelAndView model = new ModelAndView();
//‎ 设置此 ModelAndView 的视图名称, 由 DispatcherServlet 通过 ViewResolver 解析‎
model.setViewName("hello");

ModelAndView默认转发,可以设置重定向到指定的页面。

return new ModelAndView("redirect:/index.html");

 

2. 返回参数到指定页面的request作用域中

使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字,参数会返回到新页面的request作用域中

public ModelAndView addObject(String attributeName, Object attributeValue)
public ModelAndView addObject(Object attributeValue)
public ModelAndView addAllObjects(Map<String, ?> modelMap)

例如: 

    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("index");
    // 通过key/value的方式绑定数据
    modelAndView.addObject("message", "Hello World");
    return modelAndView;
<script type="text/javascript">
    var message = '[[${message}]]';
</script>

 

3. 构造方法

ModelAndView类提供了几个重载的构造器,让你可以根据自己的喜好来构造ModelAndView对象。

public ModelAndView(String viewName, Map<String, ?> model)
public ModelAndView(String viewName, String modelName, Object modelObject)

例如:

return new ModelAndView("index", "message", "Hello World");

 

ModelMap

ModelMap 对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。

通过以下方法向页面传递参数: 

addAttribute(String key,Object value); //modelMap的方法

在页面上可以通过el变量方式$key获取并展示 ModelMap 中的数据。  

ModelMap 本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址。

ModelMap model = new ModelMap();  
if(courtName != null){  
    //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型 
    model.addAttribute("courtName",courtName);  
    model.addAttribute("reservations",reservationService.query(courtName));  
}
//返回跳转地址 
return new ModelAndView("reservationQuery",model);  

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mephisto180502

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值