#author("2019-11-18T15:31:32+08:00","default:Admin","Admin") SpringMVC 在一个Controller内,被@ModelAttribute标注的方法会在此controller的每个handler方法执行前被执行。 被@ModelAttribute标注的方法的参数绑定规则和普通handler方法相同。 可以理解为:
注解方法入参 †@ModelAttribute("attrName")用在方法入参上时,作用为: 从当前的隐式model对象中取key值attrName所对应的attrValue值,并将attrValue赋给被注解的参数。 而且自动暴露为模型数据用于视图页面展示时使用 @ModelAttribute指定注解的value值attrName †如下所示,myUser和newParam两个model属性对应的attrValue值,将被赋值给方法入参。 @ModelAttribute("myUser") public User userModelAttributeMethod2(Model model){ User user = new User(); user.setAge(31); user.setName("James"); user.setEmail("123456@qq.com"); model.addAttribute("newParam","new parameter"); return user; } @RequestMapping("/testHandler") public String testHandler(@ModelAttribute("myUser") User user,@ModelAttribute("newParam") String newParam){ System.out.println(user); System.out.println(newParam); return "testModelAttribute"; @ModelAttribute注解value值缺省 †这时默认的attrName为类型名称的首字母小写。 如下例,user能够从model中获取,但是 newParam从model中获取的值为null @ModelAttribute("user") //此处必须是 user public User userModelAttributeMethod2(Model model){ User user = new User(); user.setAge(31); user.setName("James"); user.setEmail("123456@qq.com"); model.addAttribute("newParam","new parameter"); return user; } @RequestMapping("/testHandler") public String testHandler(@ModelAttribute User user,@ModelAttribute String newParam){ System.out.println(user); System.out.println(newParam); return "testModelAttribute"; } iディレクトリで複数のポータルサイトにディレクトリ登録 コメント: |