A、在Spring里,@ModelAttribute如果加在方法上面,则表示这个方法会在匹配所有其他的@RequestMapping之前先要做的,如下这两个方法
@ModelAttribute
public void testModelAttr(@RequestParam("hello")String abc,ModelMap model){
model.addAttribute("hello", hello);
}
@RequestMapping("/attr")
public String modelAttr(){
return "game/attr.ftl";
}
在你访问attr.htm前要先做@ModelAttribute声明的函数,当然你在请求参数里要有如attr.htm?hello=kitty这样的写法或者参数传来,否则会报400或404错误,当你正确输入了之后,前台就可以使用这个model里的参数了。
B、参数的值从当前控制器的@ModelAttribute方法提供的model属性中获取
@Controller
public classHelloWorldController {
(1) @ModelAttribute("userBean")
publicUser addAccount() {
return newUserBean("xiaoQ","23");
@RequestMapping(value ="/attr")
publicString helloWorld(@ModelAttribute("user") UserBean user) {
user.setUserName("xQ");
return"game/attr.ftl";
}
}
这里就是先从声明@ModelAttribute("userBean")里取得user,如果没有(1)处的声明,则会初始化一个对象,当然如果说前台传来匹配这个对象参数的话,值会直接匹配进去。