@ModelAttribute注解(SpringMVC)
在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法。
在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数绑定到对象中,再传入入参
将方法入参对象添加到模型中(对于自定义的javaBean有用)
@Target({ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ModelAttribute { String value() default ""; }
@ModelAttribute注解之运行原理
运行原理:
① 执行@ModelAttribute注解所修饰的方法,将从数据库中获取的对象存放到Map集合中,key为user(javaBean类的首字母小写形式)
② SpringMVC从Map集合中获取 user对象,将表单数据封装到与参数名称对应的user对象属性上
③ SpringMVC将user对象作为参数,传递给目标方法。
④ 注意:@ModelAttribute 注解修饰的方法中,放入到Map集合中的key值,应该和目标方法参数类型的类名称首字母小写一致。
@ModelAttribute//会在方法执行前执行改方法,同时会自动将数据存放到map中,可以用return employee返回该对象,也可以自己设置 public void getEmployee(@RequestParam(value="id",required=false)Integer id,Model model){ Employee employee = employeeDao.get(id); if(employee != null) model.addAttribute("employee", employee); System.out.println("查出的员工:"+employee); }
@RequestMapping(value="/emp/{id}",method=RequestMethod.PUT)
//@ModelAttribute(value="employee")Employee employee
//将封装在map中的对象取出来,添加到自定义的JavaBean中
public String empUpdate(@ModelAttribute(value="employee")Employee employee){ System.out.println(employee); employeeDao.save(employee); return "redirect:/emps"; }
因为追求卓越,成功在不经意间追上了你