前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >@ModelAttribute 注解

@ModelAttribute 注解

作者头像
haoming1100
发布2018-04-28 15:39:44
7330
发布2018-04-28 15:39:44
举报
文章被收录于专栏:步履前行
最近用到了@ModelAttribute,就顺便学习下。
  •  在方法级别使用时,比如
代码语言:javascript
复制
1 @ModelAttribute
2 public void addAttributes(Model model) {
3     model.addAttribute("msg", "hello world!");
4 }

在这个例子中,我们展示了一个方法,它将一个msg属性添加到Model中。

通常,在调用方法前,SpringMvc会始终先调用该方法,类似与我们用到的拦截器,过滤器。优先级别在方法中最高。(注意,只在同一个controller时)

代码语言:javascript
复制
1 @ModelAttribute("user1")
2 public void addAttributes(User user) {
3    
4 }

在这里,ModelAttribute有了一个user1,然后参数是user,所以在Model中会存在2个对象,user和user1

  • 在方法中,
代码语言:javascript
复制
1 @RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
2 public String submit(@ModelAttribute("employee") Employee employee) {
3  
4     return "employeeView";
5 }

参数会中模型中查找,也就是比如我们提交一个form表单时,可以使用这种方法来获取一个对象,比如会先在model中先获取employee的对象,如果获取不到就会先通过反射来实例化,然后从request里面的值来set实例化的对象,然后把这个对象添加到model中

  • 在类级别中
  • 在类级别中使用@SessionAttributes,作用是在controller中共享这个model,直到org.springframework.web.bind.support.SessionStatus#setComplete会清空session值,或者是session过期
代码语言:javascript
复制
1 @Controller  
2 @RequestMapping("user")  
3 @SessionAttributes("test")  
4 public class TestController {

  }
代码语言:javascript
复制
 1 @Controller
 2 @RequestMapping("user")
 3 @SessionAttributes("test")
 4 public class TestController {
 5 
 6     @RequestMapping(value = "test1")
 7     public String test1(HttpServletRequest request) {
 8         request.getSession().setAttribute("test",user);  
 9         
10     }
11 
12     @RequestMapping(value = "test2")
13     public String test2(@ModelAttribute("test") User user,SessionStatus sessionStatus) {
14         return null;
15     }
16 }

在这个代码中,会先调用test1再调用test2,因为在test1中设置test,因为使用了@SessionAttributes("test"),会确保test先存在

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最近用到了@ModelAttribute,就顺便学习下。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档