码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC-@ModelAttribute注解2

时间:2017-06-25 17:41:57      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:jsp   用法   ring   control   区别   public   springmvc   ice   return   

先看一个没有使用@ModelAttribute的Controller方法

@RequestMapping("/save")  
public String save(User user) {  
    user.setUsername("U love me");  
    userService.save(user);  
    return "result";  
}  

 执行此方法时会将key为"user"(注意:这里即使参数名称是user1,key一样还是"user"),

value为user的对象加入到model。在jsp页面可以通过${user.id}和${user.name}得到值的,

即上面方法和下面方法是相当的:

@RequestMapping("/save")  
public String save(Model model,int id,String username) {  
    User user=new User();  
    //这里是通过反射从request里面拿值再set到user  
    user.setId(id);  
    user.setUsername(username);  
    model.addAttribute("user",user);  
      
    user.setUsername("U love me");  
    userService.save(user);  
    return "result";  
}  

一.下面再来看看@ModelAttribute的基本用法.
1.在方法上使用@ModelAttribute

@ModelAttribute("user1")  
public User addUser(User user) {  
    return new User(520,"I love U");  
}  

若在Controller内,那么执行Controller内带有@RequestMapping的方法之前,都会先执行此addUser方法。

并且执行addUser过程中会添加两个对象到model,

先添加key为"user"的对象(由addUser方法的User user引起的),再添加key为"user1"的对象(由注解@ModelAttribute("user1")引起的).

2.在方法参数上使用@ModelAttribute.

@RequestMapping("/save")  
public String save(@ModelAttribute User user) {  
    user.setUsername("U love me");  
    userService.save(user);  
    return "result";  
}

此方法会先从model去获取key为"user"的对象,如果获取不到会通过反射实例化一个User对象,

再从request里面拿值set到这个对象,然后把这个User对象添加到model(其中key为"user")。
使用了@ModelAttribute可修改这个key,不一定是"user",此情况下,用与不用@ModelAttribute没有区别。

SpringMVC-@ModelAttribute注解2

标签:jsp   用法   ring   control   区别   public   springmvc   ice   return   

原文地址:http://www.cnblogs.com/shen199103/p/7077123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!