springmvc中ModelAttribute注解详解
下文笔者讲述ModelAttribute注解的功能简介说明,如下所示
ModelAttribute注解功能简介
ModelAttribute注解功能: 1.绑定请求参数到指定对象上 2.ModelAttribute注解放入方法上时,此方法会在所有Controller之前运行 我们常用于权限验证,参数获取等操作时,采用此种模式例:
绑定请求参数到指定对象
@RequestMapping("/test") public String test(@ModelAttribute("user") UserModel user) { //此时model先获取key等于user的对象,如果获取失败,则会使用反射实例化一个user对象 //然后从request中将值都set到对象中 } 例: URl/test?name=”maomao”&pwd=”88888”&age=18 此时 test 方法会自动将name,pwd,age映射到user对象中 那么这一切都是ModelAttribute注解的功劳
注意事项: URI模板变量也能自动绑定到命令对象中 并且URI模板变量的优先级最高 例 @RequestMapping("/test2/{name}/{pwd}") public String test2(@ModelAttribute("user") UserTest user) 请求参数为:/test2/{name}/{pwd} 当请求参数为:/test2/java/16?name=”maomao”&age=22 // user对象中的值为 name:”java” age:22 pwd:16
方法上使用@ModelAttribute
当一个一般方法上加入@ModelAttribute注解时 此方法会在所有controller方法之前运行此方法 如:一些通用的视图变量,会提前采用此种方法生成例
/** * 此处使用此注解,则前端所有方法都可以使用listA * 这个Model * @return */ @ModelAttribute("listA") public List<String> list(){ List<String> list = new ArrayList<>(); list.add("此Controler下的视图都能获取此model"); list.add("modelValue2"); list.add("modelValue3"); return list; } //前端页面 <div> <p>${fn:length(listA)}</p> <c:forEach items="${listA}" var="list"> <div> <c:out value="${list}" /> </div> </c:forEach> </div> @ModelAttribute("user1") public UserTest addUser(UserTest user) { return new UserTest("maomao","88888",12); } <p> 姓名:${user1.name}<br />年龄:${user1.age}<br /> 密码:${user1.pwd}<br /> </p> ----运行以上代码,页面的绑定值为: 姓名:maomao 年龄:12 密码:88888
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。