ModelMap对象的 addAttribute,put两个方法区别

这个是 源码中 ModelMap的定义 类  public class ModelMap extends LinkedHashMap<String, Object>

说明 ModelMap是继承自LinkedHashMap的,则put方法是继承自 HashMap的方法,没什么特殊而addAttribute方法的定义public ModelMap addAttribute(String attributeName, Object attributeValue)  {    Assert.notNull(attributeName, "Model attribute name must not be null");    put(attributeName, attributeValue);    return this;  }其实也是调用的put方法,但是会在调用之前判断 key值是否为null,如果为null则会报错java.lang.IllegalArgumentException: Model attribute name must not be null,而put方法不会检查key值是否会空综上,则 ModelMap对象的 addAttribute,put两个方法有什么区别就是  addAttribute是不允许添加空值的key,put是允许的

原文地址:https://www.cnblogs.com/libin6505/p/8386244.html

时间: 2024-10-03 03:23:08

ModelMap对象的 addAttribute,put两个方法区别的相关文章

UIImage加载图片的两种方法区别

Apple官方的文档为生成一个UIImage对象提供了两种方法加载图片: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路径. 那么两种有什么区别吗? 肯定是有的.根据Apple的官方文档: imageNamed: 这 个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话.如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这 个对象.因此imageNamed的优点是当加载时会缓存图

非指针 复制对象和数组的两种方法

JS在复制对象的时候,复制的是指针.有复制关系的两个对象,一个改变时另一个的值也跟着变了.数组也是对象,也存在这种现象. 实现对象的非指针复制的最简单方法: var obj2 = JSON.parse(JSON.stringify(obj1)); 原理就是利用JSON方法,先将对象obj1转成字符串,再解析为对象赋值给obj2.这样obj1和obj2就指向内存中的不同对象了,虽然值一样,但是检测 obj1==obj2 得到 false . 题外话:对象和数组的相等判断,得到的结果不是字面量一不一

获取对象中值的两种方法

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="button" name="" id="btn" value="按钮" /> <input type=&

将NSTimer添加至RunLoop中的两种方法区别

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];          //用NSObject的方法创建一个多线程     [self p

JS中Date对象getYear()方法和getFullYear()方法区别

getYear() 使用getYear()函数的本意是获取年份,以2010年为例,如: var nowd = new Date(); var yf = nowd.getYear(); 在IE中是可以正确获取年份:2010,但是在FF等浏览器下则为:110. 原因则是 在 FF等浏览器内 getYear 返回的是 "当前年份-1900" 的值(即年份基数是1900) 而IE则是 当today的年份大于等于2000的时,直接将1900加上了,返回的 2010. getFullYear()

java String转Long两种方法区别

第一种:包装类型:Byte,Integer,Short,Long,Boolean,Character,Float,Double等8种 Long.valueOf("String")返回Long包装类型 第二种:基本数据类型:byte,int,short,long,boolean,char,float,double等8种 Long.parseLong("String")返回long基本数据类型 原文地址:https://www.cnblogs.com/zlw-xf/p/

浅析对象访问属性的&quot;.&quot;和&quot;[]&quot;方法区别

在JavaScript中通常使用”."运算符来存取对象的属性的值.或者使用[]作为一个关联数组来存取对象的属性.但是这两种方式有什么区别了? 例如,读取object中的property属性值:  object.property object['property'] 以上两种方式都可以实现属性的存取. 1.语法方面的区别 点表示法的对象的属性名是标识符,而后者的属性名则是一个字符串. 2.灵活性方面的区别 在JavaScript编写程序中,可以为对象创建任意数目的属性.但使用”.“运算符来存取一个

Intent传递对象的两种方法

Android为intent提供了两种传递对象参数类型的方法 分别需要使实体类实现Serializable接口.Parcelable接口 首先我们要知道,传递对象,需要先将对象序列化 一.那么为什么要对象序列化 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.用过序列化对象在网络中.进程间传递对象: 二.序列化对象什么时候实现Serializable接口,什么时候实现Parcelable接口接口 1.Parcelable不能使用将数据存储在磁盘上,因为Parcelable在外界有变化的

Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

[转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写了一个简单的Demo,大家就一步一步跟我来吧! 第一步:新建一个andr