What is @ModelAttribute in Spring MVC?
In Spring MVC, the @ModelAttribute annotation is used to bind request parameters to method arguments in controller methods.
Here's an example of how you can use the @ModelAttribute annotation to bind request parameters to a method argument:
@Controller
public class MyController {
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public String handleRequest(@ModelAttribute("param1") String param1,
@ModelAttribute("param2") int param2,
Model model) {
// use the request parameters here
return "viewName";
}
}In this example, the handleRequest() method is mapped to the /foo URL and accepts two request parameters: param1 and param2. The @ModelAttribute annotation is used to bind the values of these parameters to the param1 and param2 method arguments.
The @ModelAttribute annotation can also be used to bind the result of a method to a specific attribute in the model. Here's an example of how you can do this:
@Controller
public class MyController {
@ModelAttribute("attributeName")
public String populateAttribute() {
return "Attribute Value";
}
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public String handleRequest(Model model) {
// the "attributeName" attribute has already been added to the model
return "viewName";
}
}In this example, the populateAttribute() method is annotated with @ModelAttribute and is invoked before the handleRequest() method is called. The result of the populateAttribute() method is added to the model under the name "attributeName".
I hope this helps! Let me know if you have any questions.