SpringMVC控制器方法参数传入的ModelMap 和Model类型有啥区别
参考
http://blog.csdn.net/u013067598/article/details/69372309
http://blog.csdn.net/u013686993/article/details/52932079
可见最终传入的是ExtendedModelMap ,它继承了ModelMap ,实现了Model接口,
ModelMap又继承自HashMap。
Model接口的方法

ModeMap类的方法:

ExtendedModelMap类的方法:

可见ExtendedModelMap的方法跟ModelMap都一样,并么有增加什么,估计是功能增强了吧。
而从ModelMap开始由于继承了HaspMap所以多了很多Map的方法
Model接口就是主要定义了往模型中添加数据的几个方法。
所以参数类型写ModelMap和Model都没错,写成Map也能用,甚至还可以写成ExtendedModelMap。
如果只是往模型里写入数据的话,写个Model类型参数就足够了,能addAttribute就行,不需要HaspMap的get方法。
当然实际用的话谁还去想那么细呢,搞个ModelMap读写都能行就成了!
另外测试用HashMap类型的put设置模型数据视图里也能读取,Model接口的addAttribute估计是为了更直观吧。
SpringMVC控制器方法参数传入的ModelMap 和Model类型有啥区别的更多相关文章
- 关于laravel5.5控制器方法参数依赖注入原理深度解析及问题修复
在laravel5.5中,可以根据控制器方法的参数类型,自动注入一个实例化对象,极大提升了编程的效率,但是相比较与Java的SpringMVC框架,功能还是有所欠缺,使用起来还是不太方便,主要体现在方 ...
- Spring MVC控制器方法参数类型
HttpServletRequest Spring会自动将 Servlet API 作为参数传过来 HttpServletResponse InputStream 相当于request.getInpu ...
- MVC如何避免控制器方法接收到的值不能被转换为参数类型
假设控制器方法参数类型是int: public ActionResult GetSth(int id) { return Content(id.ToString()); } 而视图传递过来的是字符串: ...
- spring mvc 控制器方法传递一些经验对象的数组
由于该项目必须提交一个表单,其中多个对象,更好的方法是直接通过在控制器方法参数的数组. 因为Spring mvc框架在反射生成控制方法的參数对象的时候会调用这个类的getDeclaredConstru ...
- block做方法参数时--block的参数传值过程 例1
说明:此例子中方法的调用在此文中是从下到上调用的.(即: 方法五调用方法四: 方法四调用方法三) 方法一:- (void)setCompletionBlockWithSuccess: ...
- Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView
1.前端控制器org.springframework.web.servlet.DispatcherServlet 所有的请求驱动都围绕这个DispatcherServlet来分派请求.springMV ...
- 【springmvc Request】 springmvc请求接收参数的几种方法
通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuida@ima@com/share/1751862 ...
- SpringMVC控制器接收不了PUT提交的参数的解决方案
摘要: SpringMVC控制器接收不了PUT提交的参数的解决方案 这次改造了下框架,把控制器的API全部REST化,不做不知道,SpringMVC的REST有各种坑让你去跳,顺利绕过它们花了我不少时 ...
- spring mvc中的控制器方法中的参数从哪里传进来?
编写控制器方法的时候很奇怪,spring是怎么知道你控制器方法的参数类型,并且注入正确的对象呢? 比如下面这样 @RequestMapping(value="/register", ...
随机推荐
- python学习小记
python HTTP请求示例: # coding=utf-8 # more materials: http://docs.python-requests.org/zh_CN/latest/user/ ...
- apache2.4 httpd.conf httpd-vhost.conf配置
extra / httpd-vhost.conf <VirtualHost *:81> DocumentRoot "/data/sda1_data/" ServerNa ...
- python 将函数参数一键转化成字典的技巧,非**kwargs,公有方法和函数抵制kwargs。
1.有时候使用设计模式,例如工厂方法模式,函数传的参数还需要一一根据条件传递到各个类里面去实例化或者其他原因,直接复制所有的参数看起来不太好,造成很多相同的行. 2.直接函数/方法中写**kwargs ...
- Dubbo,Zookeeper入门
Zookeeper 功能:分布式应用程序协调服务,集群管理者,监视集群各个节点状态-->提交反馈-->进行下一步合理操作: 机制:目录方式,当目录节点发生变化(数据改变,被删除,子节点增加 ...
- 解决macOS git clone Azure DevOps提示身份认证失败问题
macOS的终端输入git clone对应Azure DevOps的Git地址,紧接着输入正确的用户名和密码仍然会提示认证失败.解决的方法是安装微软的Git-Credential-Manager.由于 ...
- Linux下的搜索查找命令的详解(which)
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件 ...
- [转]常见的JavaScript内存泄露
什么是内存泄露 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制, ...
- 【C++ 继承与派生/知识梳理】
为什么引入继承派生 代码重用扩充 软件的复用 层次分类 派生类的语法定义 class 派生类名(1):继承方式(2) 基类名(3){ 派生成员声明:} *(1)一个派生类——>多个基类,多继 ...
- 小程序里let和var以及const区别
在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. [JavaScript] 纯文 ...
- Apache hardoop 的基础知识学习总结
hardoop的主要构成: (1)HDFS 分布式文件系统,解决海量数据存储 (2) YARN 解决资源任务调度(包括作业调度和集群资源调度) (3)MapReduce 解决海量数据计算 集群搭建的步 ...