SpringMVC框架中ModelAndView、Model的区别与使用
程序员文章站
2022-04-02 17:47:18
...
1. Model
Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。
public class ExtendedModelMap extends ModelMap implements Model
2.ModelMap
ModelMap的声明格式:
public class ModelMap extends LinkedHashMap<String, Object>
ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用:用来在一个请求过程中传递处理的数据。ModelMap或者Model通过addAttribute方法向页面传递参数,其中addAttribute方法参数有多种方式:
public ModelMap addAttribute(String attributeName, Object attributeValue){...}
public ModelMap addAttribute(Object attributeValue){...}
public ModelMap addAllAttributes(Collection<?> attributeValues) {...}
public ModelMap addAllAttributes(Map<String, ?> attributes){...}
在页面上可以通过el表达式语言$attributeName等系列数据展示标签获取并展示modelmap中的数据。
3.ModelAndView
ModelAndView对象有两个作用:
ModelAndView view = new ModelAndView("path:ok");
或者通过setViewName方式:
public void setViewName(String viewName){...}
(2). 将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
public ModelAndView addObject(String attributeName, Object attributeValue){...}
public ModelAndView addObject(Object attributeValue){...}
在页面上也是可以通过el表达式语言$attributeName等系列数据展示标签获取并展示ModelAndView中的数据。
4. 使用方式如下:
(1) ModelMap
public String xxxxmethod(String someparam,ModelMap model)
{
//省略方法处理逻辑若干
//将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
model.addAttribute("key",someparam);
......
//返回跳转地址
return "path:handleok";
}
(2) ModelAndView
public ModelAndView xxxxmethod(String someparam)
{
//省略方法处理逻辑若干
//构建ModelAndView实例,并设置跳转地址
ModelAndView view = new ModelAndView("path:handleok");
//将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
view.addObject("key",someparam);
......
//返回ModelAndView对象view
return view;
}
除了使用ModelAndView方式外。还可以使用Map、Model和ModelMap来向前台页面创造
使用后面3种方式,都是在方法参数中,指定一个该类型的参数。例如:
Java代码
@RequestMapping("/test")
2 public String test(Map<String,Object> map,Model model,ModelMap modelMap){
3
4 map.put("names", Arrays.asList("caoyc","zhh","cjx"));
5 model.addAttribute("time", new Date());
6 modelMap.addAttribute("city", "ChengDu");
7 modelMap.put("gender", "male");
8 return "hello";
9 }
JSP页面
结果:
推荐阅读
-
Android中gravity与layout_gravity的使用区别分析
-
微信小程序 image组件binderror使用例子与js中的onerror区别
-
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
-
YII2框架中behavior行为的理解与使用方法示例
-
YII2框架中actions的作用与使用方法示例
-
SpringMVC中Model和ModelAndView的EL表达式取值方法
-
微信小程序 image组件binderror使用例子与js中的onerror区别
-
sql中varchar和nvarchar的区别与使用方法
-
thinkPHP框架中layer.js的封装与使用方法示例
-
浅析Vue.js中v-bind v-model的使用和区别