How @ModelAttribute Annotation works in Spring?
In SpringMVC, @ModelAttribute is used at 2 places.
1. At Method level
2. At Method parameter level.
How @ModelAttribute at method level works?
Explanation:
if I access this URL: http://localhost:5060/SpringMVC/customer.htm then if we find the
logging details in the console, then we can get the clear cut picture of @ModelAttribute flow
Console Output
This Shows that it follows 3 rules
Rule-1: If the @ModelAttribute is used at Method level, then those methods are executed first, remaining methods (which are not annotated with @ModelAttribute) are executed with the help of @RequestMapping annotation.
Rule-2: If more than one method in the controller are annotated with the @ModelAttribute, then the execution follows the sequence order of the @ModelAttribute annotated methods. (Check the output)
Rule-3: If the method parameter is annotated with @ModelAttribute, those methods are executed w.r.t @RequestMapping annotation. Ex: During the submit button execution (in controller it is POST)
Work Flow
![](data:image/png;base64,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)
During the execution of the handler method, you see CommandObject has been added to the Spring model attributes, but it is not yet in the HttpServletRequest or HttpSession scope.
But after the handler method has executed and when the nextpage.jsp is rendered, you can see that the model attribute data (CommandObject) has indeed been copied as an attribute (with the same attribute key) to both HttpServletRequest and HttpSession.
Note-1: No need to write any code to set the model attribute into the request scope.
Note-2: we need to use @SessionAttributes at the class level in the controller class to set the model attributes into the session scope.
How @ModelAttribute at method parameter level works?
Case-1: jsp to controller
Case-2: Controller to jsp
![](data:image/png;base64,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)
1. At Method level
2. At Method parameter level.
How @ModelAttribute at method level works?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
| package com.customer.controller;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.support.SessionStatus;
import com.customer.model.Customer;
@Controller
@RequestMapping("/customer.htm")
public class CustomerController{
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("customer") Customer customer,
BindingResult result, SessionStatus status) {
System.out.println("Parameter Level ModelAttriute is executed");
if (result.hasErrors()) {
return "CustomerForm";
} else {
status.setComplete();
return "CustomerSuccess";
}
}
@RequestMapping(method = RequestMethod.GET)
public String initForm(ModelMap model){
System.out.println("initForm method is executed (GET)");
Customer cust = new Customer();
cust.setFavFramework(new String []{"Spring MVC"});
cust.setSex("M");
cust.setJavaSkills("Hibernate");
cust.setSecretValue("I'm hidden value");
model.addAttribute("customer", cust);
return "CustomerForm";
}
@ModelAttribute("webFrameworkList")
public List<String> populateWebFrameworkList() {
System.out.println("Method Level ModelAttriute is executed (populateWebFrameworkList)");
List<String> webFrameworkList = new ArrayList<String>();
webFrameworkList.add("Spring MVC");
webFrameworkList.add("Struts 1");
webFrameworkList.add("Struts 2");
webFrameworkList.add("JSF");
webFrameworkList.add("Apache Wicket");
return webFrameworkList;
}
@InitBinder
public void initBinder(WebDataBinder binder) {
System.out.println("initBinder method is executed");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
@ModelAttribute("numberList")
public List<String> populateNumberList() {
System.out.println("Method Level ModelAttriute is executed (populateNumberList)");
List<String> numberList = new ArrayList<String>();
numberList.add("Number 1");
numberList.add("Number 2");
numberList.add("Number 3");
numberList.add("Number 4");
numberList.add("Number 5");
return numberList;
}
@ModelAttribute("javaSkillsList")
public Map<String,String> populateJavaSkillList() {
System.out.println("Method Level ModelAttriute is executed (populateJavaSkillList)");
Map<String,String> javaSkill = new LinkedHashMap<String,String>();
javaSkill.put("Hibernate", "Hibernate");
javaSkill.put("Spring", "Spring");
javaSkill.put("Apache Wicket", "Apache Wicket");
javaSkill.put("Struts", "Struts");
return javaSkill;
}
@ModelAttribute("countryList")
public Map<String,String> populateCountryList() {
System.out.println("Method Level ModelAttriute is executed (populateCountryList)");
Map<String,String> country = new LinkedHashMap<String,String>();
country.put("US", "United Stated");
country.put("CHINA", "China");
country.put("SG", "Singapore");
country.put("MY", "Malaysia");
return country;
}
}
|
Explanation:
if I access this URL: http://localhost:5060/SpringMVC/customer.htm then if we find the
logging details in the console, then we can get the clear cut picture of @ModelAttribute flow
Console Output
This Shows that it follows 3 rules
Rule-1: If the @ModelAttribute is used at Method level, then those methods are executed first, remaining methods (which are not annotated with @ModelAttribute) are executed with the help of @RequestMapping annotation.
Rule-2: If more than one method in the controller are annotated with the @ModelAttribute, then the execution follows the sequence order of the @ModelAttribute annotated methods. (Check the output)
Rule-3: If the method parameter is annotated with @ModelAttribute, those methods are executed w.r.t @RequestMapping annotation. Ex: During the submit button execution (in controller it is POST)
Work Flow
During the execution of the handler method, you see CommandObject has been added to the Spring model attributes, but it is not yet in the HttpServletRequest or HttpSession scope.
But after the handler method has executed and when the nextpage.jsp is rendered, you can see that the model attribute data (CommandObject) has indeed been copied as an attribute (with the same attribute key) to both HttpServletRequest and HttpSession.
Note-1: No need to write any code to set the model attribute into the request scope.
Note-2: we need to use @SessionAttributes at the class level in the controller class to set the model attributes into the session scope.
How @ModelAttribute at method parameter level works?
Case-1: jsp to controller