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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


