参数预加载(@ModelAttribute)

Exisi 2022-06-28 14:27:43
Categories: Tags:

 

@ModelAttribute方法通常被用来在请求方法执行前,预先填充一些公共需要的属性或数据到Model

 

 

参数

描述

value

要绑定到的模型属性的名称

name

name属性的别名

binding

声明是否启用数据绑定,默认为true

示例

@Controller

public class ModelAttributeParamController {

 

//作用在方法上,返回的值携带到其他方法的Model中,并注入到请求方法的视图参数中

@ModelAttribute(value = "attributeName")

public String myModel(@RequestParam(required = false) String value) {

return value;

}

 

//作用在参数上,参数直接加入Model,并注入到方法的视图参数中

@RequestMapping(value = "/param")

public String param(@ModelAttribute("name"String str2, @ModelAttribute("age"int str3) {

return "param"; //返回视图

}

}

如果@ModelAttribute注解在使用了@RequestMapping的方法上,那么返回的字符串被指定为数据,而不是视图

 

 

 

注解无返回值的方法

 

示例

@Controller

public class ModelAttributeController {

 

@ModelAttribute

public void myModel(@RequestParam(required = false) String value, Model model){

    model.addAttribute("attributeName"value); //value参数通过model加入视图

}

 

@RequestMapping("/method")

public String method(){

    return "method";

}

}

 

 

 

注解有返回值的方法

示例

@Controller

public class ModelAttributeController {

@ModelAttribute

public String myModel(@RequestParam(required = false) String value) {

    return value;

}

 

@ModelAttribute("num")

public String myModel(@RequestParam(required = false) int number) {

    return value;

}

 

@ModelAttribute

public Student myModel(@RequestParam(required = false) String name) {

    Student student = new Student(name);

    return student;

}

}

 

等同于:

model.addAttribute("string", value);

model.addAttribute("num", number);

model.addAttribute("student", student);