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。

如果只是读取模型里的数据的话写成Map类型也行,有get方法就够了,失去了Moel接口的addAttribute添加模型数据的方法。

如果只是往模型里写入数据的话,写个Model类型参数就足够了,能addAttribute就行,不需要HaspMap的get方法。

当然实际用的话谁还去想那么细呢,搞个ModelMap读写都能行就成了!

时间: 2024-10-03 17:06:49

SpringMVC控制器方法参数传入的ModelMap 和Model类型有啥区别的相关文章

关于laravel5.5控制器方法参数依赖注入原理深度解析及问题修复

在laravel5.5中,可以根据控制器方法的参数类型,自动注入一个实例化对象,极大提升了编程的效率,但是相比较与Java的SpringMVC框架,功能还是有所欠缺,使用起来还是不太方便,主要体现在方法参数的注入不完全是按照参数名称进行的,如果改变了传入参数的顺序会导致类型不匹配的错误. 一.控制器方法参数注入步骤设计 1.在/routes/web.php中添加路由 Route::get('/diary/show/{diary}/{page?}','Diary\[email protected]

[ jquery 过滤器nextAll(expr) ] 此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,此方法参数只能传递表达式,无法传递其他类型

此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,此方法参数只能传递表达式,无法传递其他类型 可以使用此方法向里面传递表达式的方法实现和jqueryObj.next()相同的效果 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta

[ jquery 过滤器next(expr) ] 此方法用于在选择器的基础之上搜索被选元素的后一个同级元素,此方法参数只能传递表达式,无法传递其他类型

此方法用于在选择器的基础之上搜索被选元素的后一个同级元素,此方法参数只能传递表达式,无法传递其他类型: 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='keyword1,key

Spring MVC控制器方法参数类型

HttpServletRequest Spring会自动将 Servlet API 作为参数传过来 HttpServletResponse InputStream 相当于request,getInputStream() 获取请求区内容字节流 OutputStream 相当于request.getOutputStream() 获取响应区内容字节流 Reader request.getReader() Writer request.getWriter() 注意InputStream/OutputSt

ajax post提交到SpringMVC的Controller并将处理结果传递到前台输出总结(6)-- springmvc 控制器获取参数的几种方式

参考:http://www.cnblogs.com/xiaoxi/p/5695783.html 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @param username * @param password * @return */ @RequestMapping("/addUser1") public String addUser1(S

SpringMVC ArgumentREsoler(方法参数解析器)

例: 先创建自定义注解 // @Target(ElementType.PARAMETER) //在运行时生效 //RetentionPolicy.RUNTIME 给方法使用 @Retention(RetentionPolicy.RUNTIME) public @interface CurrentUser { } 去定义自定义注解的规则 package com.lanou.demo.resolvers; import com.lanou.demo.annotation.CurrentUser; i

MVC如何避免控制器方法接收到的值不能被转换为参数类型

假设控制器方法参数类型是int: public ActionResult GetSth(int id) { return Content(id.ToString()); } 而视图传递过来的是字符串: @Html.ActionLink("获取","GetSth",new {id="hello"}) 于是就会报类似如下的错: 对于"MvcApplication3.Controllers.HomeController"中方法&qu

spring mvc 控制器方法传数组对象的一些经验

因为项目需要在一个表单里面提交多个对象,比较好的做法就是直接在控制器方法参数里传一个数组. 由于Spring mvc框架在反射生成控制方法的参数对象的时候会调用这个类的getDeclaredConstructor方法来获得构造函数, 但是一直报NoSuchMethodException的异常. 根据这个方法的jdk文档,这个类是一个数组对象时,这个方法会抛出java.lang.NoSuchMethodException,因为接口.数组类.void.基本类型没有构造函数. 同事后来给我支了两招,使

spring mvc 控制器方法传递一些经验对象的数组

由于该项目必须提交一个表单,其中多个对象,更好的方法是直接通过在控制器方法参数的数组. 因为Spring mvc框架在反射生成控制方法的參数对象的时候会调用这个类的getDeclaredConstructor方法来获得构造函数, 可是一直报NoSuchMethodException的异常. 依据这种方法的jdk文档,这个类是一个数组对象时,这种方法会抛出java.lang.NoSuchMethodException,由于接口.数组类.void.基本类型没有构造函数. 同事后来给我支了两招,使用A