关于@ModelAttribute的理解

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)处的声明,则会初始化一个对象,当然如果说前台传来匹配这个对象参数的话,值会直接匹配进去。


你可能感兴趣的:(spring,String,user)