对于使用ModelMap方法的理解
问题描述:
//String 与 ModelMap
public String showView1(Integer userId, ModelMap modelMap){
String view = "/um/view.jsp";
User user = new User();
//模拟数据获取的代码
if(userId == 1){
user.setUsername("lily");
}else if(userId == 2){
user.setUsername("smith");
}else if(userId == 3){
user.setUsername("lina");
}
modelMap.addAttribute("u", user);
return view;
}方法一开始看,我是有点懵的,因为 return view 和前面一堆代码(除了String view)没有任何联系。后面我自己听了几遍后有了一定的理解,希望老师看一下我理解的是否正确。
尝试过的解决方式:
return view这里确实难以理解,其实这里做的与ModelAndView没有区别。首先难以理解的原因是我们看不到Request对象,也看不到模板引擎做的事情。但是理解主线就能看懂了。
这里String view就是表达即将跳转的地址,使用ModelAndView也是最终要跳转到这个地址,两者是一样的。跳转后就是模板引擎处理转发后的请求,将数据反应到jsp视图页面上。
ModelMap对象的addAttribute()和ModelAndView对象的addObject()做的事情也是完全相同,就是为当前的请求添加User对象这个数据。
所以看似return view 和 方法体中获得User再添加User 没有关系,其实背后是通过一个请求对象串联起来,最后这个请求对象会到达return的jsp地址,然后被模板引擎使用并将数据显示再界面上。
不知理解上是否有误?细节上是否有误?
正在回答
同学你好,同学的理解大致是正确的,但是细节有些问题。不过老师这边无法用简单的方式给同学进行解释,需要同学自行学习一下SpringMVC执行流程的源码(不是流程简图,是源码),源码中可以看出两者的本质是相同的,但是执行位置和方式有所不同。
祝学习愉快~
- 参与学习 人
- 提交作业 8791 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星