Spring-MVC ---- ModelAttribute

作用:

先从数据库拿数据创建一个对象,然后再从表单传来的数据中拿数据进行修改。


public  class SpringMVCTest

{
    @ModelAttribute
    public void getUser(@RequestParam(value="id",request=false)) Integer id,
        Map<String,Object> map
    {
       if(id!=null)
        {   //模仿从数据库获值
            User user=new User(1,"Tom","123456","tom@atguigu.com",12);
            map.put("user",user);
        }
    }

    @RequestMapping("/testModelAttribute")
    public String testMOdelAttribute(User user)
        
    {
       System.out.println("修改",user);
        return "success"

     }
}

1.  调用    @ModelAttribute 注释的方法 从数据库中获取数据 创建对象加入到Map中;

2.再从Map中取出对象并根据表单进行赋值修改

3.将对象传入调用的handler方法;

 

 

SpringMVC 确定目标方法POJO类型入参的过程:

1.确定一个key:

1)如果目标方法的POJO类型参数没有使用@ModelAttribute 作为修饰,则key为POJO类名第一个字母的小写

2)。。。。。。。。。。。。。。使用了@ModelAtrribute作为修饰,则key为注释value的属性值;

2.在implicitModel 中查找key对应的对象,若存在,则作为入参传入

1)若在@ModelAttribute 标记的方法中的Map中保存过,切key和1确定的key一直,则会获得到。、

3.若implicitModel 中不存在key对应的对象,则检查当前的Handler是否使用@SessionAttribute,注解修饰,

如使用了@SessionAttributes 注解的value属性中包含了key,则会从HttpSession中获取key所对应的value值,若存在则直接传入

目标方法的入参中,若不存在则将抛出异常(这种情况是有对应key 没有value)。

4.若Handler 没有标识 @SessionAttribute 注解或@SessionAttributes 中没有对应的key;则会通过反射来创建POJO类型的参数

,传入为目标方法的参数。

5.springMVC 会把 key和POJO 类型的对象保存在implicitModel中,进而保存到request中

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值