@ModelAttribute

来源:互联网 发布:福建网络干部培训学院 编辑:程序博客网 时间:2024/06/07 01:04

注释在方法上

是存数据
不能和@ExceptionHandler一起使用,因为异常随时出现,会造成Model数据的不稳定。

在同一方法上不与@RequestMapping一起用

注意事项:
被@ModelAttribute注解的方法会在controller每个方法执行前被执行。

注释void方法

//请求hellowWorld之前,会执行setUserName()@Controllerpublic class testController {          @ModelAttribute          public void setUserName(            @RequestParam String userName, Model model) {              model.addAttribute("userName", userName);          }          @RequestMapping(value = "/helloWorld")          public String helloWorld() {              return "helloWorld";          }      }

注释返回具体类的方法

//当model属性的名称没有指定时,它由返回类型隐含表示。//这个方法返回User类型,那么这个model属性的名称是user。@ControllerPublic class testController{       //情况1    @ModelAttribute    public User getUser()    {        return userService.getUser();    }    //情况2(推荐),设定User实体绑定到currentUser    @ModelAttribute(value = "currentUser")    public User getUser()    {        return userService.getUser();    }}

在同一方法上与@RequestMapping一起用

注意: 这个是在请求getUser的时候,把返回值和currentUser组装成Model对象

@ControllerPublic class testController{       //情况1    @RequestMapping(value="/getUser")    @ModelAttribute(value="currentUser")    public User getUser()    {        return userService.getUser();    }}   

注释方法的参数

是取数据

从model

//从request(Model)中取已经存在的对象{currentUser: User}@RequestMapping(value="/getUser")public User getUser(@ModelAttribute("currentUser") User user){    user.getName();    user.getAddress();}

Url或表单中获取组装

//假设请求url为: localhost:8080/项目名/getUser?name=lucy&address=beijing//这样ModelAttribute就会组装起参数来,其实可以不用写@MdelAttrubte,即使不写springmvc也会自动调用它组装@RequestMapping(value="/getUser")public User getUser(@ModelAttribute User user){    return userService.getUser();}
0 0
原创粉丝点击