处理模型数据之Map,Model
在上一次的笔记中讲到了使用ModelAndView作为返回值,可以轻松的返回数据并且指定转发的页面。
其实我们也可以使用Map作为参数,将数据传递给页面。直接上代码:
import org.springframework.ui.Model;
/
**
* 可以添加map类型的参数(或者Model类型,ModelMap类型)
* @param map
* @return
*/
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map){
map.put("names", Arrays.asList("peter","tom","jack"));
return "hello";
}
@RequestMapping("/testModel")
public String testMap(Model model){
model.addAttribute("names",Arrays.asList("peter","tom","jack"));
return "hello";
}
代码解析:
将Map或者Model作为参数传给目标方法,然后把数据存入其中,然后就可以轻松的传给页面。
底层实现原理:springmvc会将他们转化为ModelAndView,viewName为hello,Model就是这的Map或者Model
前端获取值:
names:${names }
无论是传入Map还是Model作为参数,前端获取值得方法都是一样的。
ModelAndView也是如此。
关于ModelAndView
ModelAndView
ModelAndView 从字面上来看,就是模型和视图。我们在Controller中,可以返回一个页面,比如return "hello" 就是返回一个hello.jsp页面。其实我们也可以返回ModelAndView这个对象.
ModelAndView 这个对象中可以保存你要转发的页面以及你要返回的数据。
假设现在有一个用户想要你打开一个叫hello.jsp的页面,该页面上显示当前时间,那么我们可以这样做:
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
String viewName = "hello";
ModelAndView mv = new ModelAndView(viewName);
mv.addObject("time", new Date());
return mv;
}
代码解析:
viewName就是你要返回的界面,就相当于return "hello"
addObject()就是把你要返回的数据加入到这个对象中。
然后return ModelAndView,springmvc就帮你跳转到hello这个界面,返回时间数据
在界面上使用${time}进行对内容的接收。