spring学习之@ModelAttribute注解的简介说明
下文笔者将讲述@ModelAttribute注解的功能简介说明,如下所示:
@ModelAttribute注解
@ModelAttribute注解放在Controller方法上时 会在方法执行前运行例:
@Controller public class HelloWorldController { @ModelAttribute public void funModel(@RequestParam String test, Model model) { model.addAttribute("attributeName",test); } @RequestMapping(value = "/helloWorld") public String helloWorld() { return "java265.com"; } }
在以上的示例中,当我们访问/helloWorld时 funModel方法在helloWorld方法之前先被调用 它把请求参数(/helloWorld?abc=java165)加入到一个名为attributeName的model属性中 在它执行后 helloWorld被调用 返回视图名helloWorld和model已由@ModelAttribute方法生成完毕 model属性名称和model属性对象有model.addAttribute()实现,不过前提是要在方法中加入一个Model类型的参数。 当URL或者post中不包含次参数时,会报错,其实不需要这个方法,完全可以把请求的方法写成,这样缺少此参数也不会出错例2: ModelAttribute返回具体类中的方法
@RequestMapping(value = "/helloWorld") public String helloWorld(String abc) { return "helloWorld"; } @ModelAttribute注释返回具体类的方法 @ModelAttribute public User addUser(@RequestParam String number) { return userService.findUser(number); }
model属性没有指定名称,如上例中返回User类型,则model属性的名称为user
@ModelAttribute(value="") value中设置返回属性名称
@Controller public class HelloWorldController { @ModelAttribute("attributeName") public String addAccount(@RequestParam String test) { return test; } @RequestMapping(value = "/helloWorld") public String helloWorld() { return "helloWorld"; } }
@ModelAttribute和@RequestMapping同时注释一个方法
@Controller public class HelloWorldController { @RequestMapping(value = "/helloWorld.do") @ModelAttribute("attributeName") public String helloWorld() { return "hi java265.com"; } }
@ModelAttribute注释一个方法的参数
从model中获取@Controller public class HelloWorldController { @ModelAttribute("user") public User addUser() { return new User("test","8888"); } @RequestMapping(value = "/helloWorld") public String helloWorld(@ModelAttribute("user") User user) { user.setUserName("maomao"); return "helloWorld"; } }
@ModelAttribute("user") User user注释方法参数,参数user的值来源于addUser()方法中的model属性。 当方法体没有标注@SessionAttributes("user"),那么scope为request,如果标注了,那么scope为session
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。