
正文
@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"; }







