关于@ModelAttribute注解使用的一些细节

关于@ModelAttribute注解使用的一些细节

 *      3.***关于@ModelAttribute注解***
 *
 *           1).@ModelAttribute注解的方法总是在没有被注解的方法之前先执行。
 *
 *           2).@ModelAttribute可以注解方法返回值,也可以注解方法形参。
 *
 *           3).@ModelAttribute注解返回值与方法形参,这两种方式都会使被注
 *              解的参数以注解的value值为key存入Model中。即被注解的数据都
 *              会被存入到Model中。
 *
 *           4).当使用@ModelAttribute没有指定value值时,默认值为被注解数
 *              据(返回值,形参)的数据类型的首字母小写。
 *              注意:默认值不是数值对象名,而是数据类型的首字母小写。
 *
 *           5).# 当控制器的方法参数不是实体类的情况:
 *                     * 如果使用了@ModelAttribute注解,则绑定Model中的数据,没有使用则
 *                       还是默认绑定请求参数中的数据。
 *                     * 控制器的方法参数不能直接绑定Model中的数据,使用@ModelAttribute
 *                       注解方法参数才能。否则方法形参只能从请求参数中绑定。(除了实体类类
 *                       型的参数)
 *
 *              # 当控制器的方法参数是实体类的情况:
 *                      *当方法的参数是实体类对象时,实体类的属性优先绑定请求参数中的数据,
 *                       如果请求参数对于形参实体类来说并不完整,则形参不全的部分属性的数
 *                       据会在Model中寻找,寻找相同类型的实体类,如果找到则将那个实体类
 *                       的部分数据(对应自己缺少的那部分数据)绑定到形参的实体类中。
 *
 *                       细节:如果形参实体类的对象名能匹配Model中的实体类数据的key,则
 *                            能够实现绑定;如果形参实体类的名称与Model中对应的实体类数
 *                            据的key不相同,则需要使用@ModelAttribute注解该形参并指明
 *                            value为Model中那个实体类的key才行,否则无法绑定。
 *
 *                      例如:
 *                           当请求参数有:name=zzq
 *                           此时的方法形参:user->name=zzq,money=null
 *                           当Model有:  user->name=wlj,money=1234.0
 *                           此时的方法形参:user->name=zzq,money=1234.0
 *
 *           个人总结:
 *                  被@ModelAttribute注解了的方法会在控制器其它方法前先执行,类
 *                  似于初始化;@ModelAttribute注解的主要作用就是将被注解的形参
 *                  或返回值的结果存入Model中;@ModelAttribute注解可以让方法的
 *                  形参绑定Model中的数据;若没有指定@ModelAttribute注解的value
 *                  值,则默认值为绑定数据的类型名首字母小写;
 *
 *           感受:这里的坑太多,用法太多过于灵活,容易使人混淆,要结合多种情况并实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值