springMvc常用注解-@ModelAttribute

来源:互联网 发布:网络水军兼职 编辑:程序博客网 时间:2024/06/15 17:28

@ModelAttribute 注解可被应用在方法或方法参数上,注解在方法上的 @ModelAttribute 说明了方法的作用是用于添加一个或多个属性到model上。
这样的方法能接受与 @RequestMapping 注解相同的参数类型,只不过不能直接被映射到具体的
请求上。在同一个控制器中,注解了 @ModelAttribute 的方法实际上会在 @RequestMapping 方
法之前被调用
来个简单栗子:
返回类:

public class JsonData<T> {    private boolean ret;    private String msg;    private T date;}
@ModelAttribute    public User check(String param){        System.out.println("---------------"+param+"-----------");        User user = new User();        if("a".equals(param)){            user.setUsername("a");        }else{            user.setUsername("other");        }        return user;    }    @RequestMapping("/m1")    @ResponseBody    public JsonData modelAttribute(String param,@ModelAttribute User user){        System.out.println(param);        System.out.println("username:"+user.getUsername());        return new JsonData(true,param);    }

请求:http://localhost/m1?param=a
结果:{“ret”:true,”msg”:null,”date”:”a”}
由此可以看出@ModelAttribute注解在@RequestMapping 方法之前被调用 。
所以:@ModelAttribute 方法通常被用来填充一些公共需要的属性或数据,比如一个下拉列表所预设
的几种状态,或者宠物的几种类型,或者去取得一个HTML表单渲染所需要的命令对象,比
如 Account 等