首页 > 学院 > 开发设计 > 正文

SpringMVC ModelAttribtue注解

2019-11-08 18:42:06
字体:
来源:转载
供稿:网友

今天研究了比较久,网上的资料说的不是很清楚,来这里整理一下。

不一定准确,但是八九不离十吧。

ModelAttribute是一个在控制器里使用的注解,用来从Model里存取数据。它可以注解在方法或者方法参数上。注解在方法上意味着往Model里存数据,注解在参数上意味着从Model取数据。

有几种用法,参考自 http://blog.csdn.net/li_xiao_ming/article/details/8349115

一.在方法上注解

这种情况下,方法会在每个控制器方法调用之前被调用。

1.@ModelAttribute注释void返回值的方法 

public class HelloWorldController {            @ModelAttribute          public void populateModel(@RequestParam String abc, Model model) {             model.addAttribute("attributeName", abc);          }            @RequestMapping(value = "/helloWorld")          public String helloWorld() {             return "helloWorld";          }  } 这种情况下,populateModel先被执行,在model中置入请求参数(/helloWorld?abc=text),之后执行helloworld,返回视图和准备好的model。

2.@ModelAttribute注释返回具体类的方法 

@ModelAttribute  public Account addAccount(@RequestParam String number) {         return accountManager.findAccount(number);}  这种情况下,返回的对象会被置入Model,再传入控制器。该对象在Model中的名称由返回值类型决定,该例中名字是account。如果有多个同类型的对象会怎么样?我不知道。

3.@ModelAttribute(value="")注释返回具体类的方法 

@Controller  public class HelloWorldController {          @ModelAttribute("attributeName")          public String addAccount(@RequestParam String abc) {             return abc;          }            @RequestMapping(value = "/helloWorld")          public String helloWorld() {             return "helloWorld";          }  }这种情况和上一种类似,只是对象在Model中的名称由ModelAttribute的value参数决定

二.@ModelAttribute注释方法参数

这种情况下,参数回从Model中取出数据

1.从Model中获取

@Controller  public class HelloWorldController {          @ModelAttribute("user")          public User addAccount() {             return new User("jz","123");          }            @RequestMapping(value = "/helloWorld")          public String helloWorld(@ModelAttribute("user") User user) {             user.setUserName("jizhou");             return "helloWorld";          }  }user参数将从Model中取出名字是“user”的对象

2.从请求中获取

@Controller  public class HelloWorldController {            @RequestMapping(value = "/helloWorld")          public String helloWorld(@ModelAttribute User user) {             return "helloWorld";          }  }user回从请求中绑定数据。其实写不写标注都可以完成绑定。


上一篇:rails圣经总结

下一篇:抽象工厂模式

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表