Я знаю, что опоздал на вечеринку, но я процитирую, как говорят,
«Лучше опоздать, чем никогда». Итак, начнем,
У каждого есть свои способы объяснить вещи, позвольте мне попытаться подвести итог и упростить это для вас в нескольких шагах с примером;
Предположим, у вас есть простая форма, form.jsp
<form:form action="processForm" modelAttribute="student">
First Name : <form:input path="firstName" />
<br><br>
Last Name : <form:input path="lastName" />
<br><br>
<input type="submit" value="submit"/>
</form:form>
Путь = "Имя"
Путь = "LastName"
Это поля / свойства в StudentClass
когда вызывается форма, вызываются их геттеры, но после отправки вызываются их сеттеры, и их значения устанавливаются в bean-компоненте, который был указан в modelAttribute = "student" в теге формы.
У нас есть StudentController, который включает следующие методы;
@RequestMapping("/showForm")
public String showForm(Model theModel){ //Model is used to pass data between
//controllers and views
theModel.addAttribute("student", new Student()); //attribute name, value
return "form";
}
@RequestMapping("/processForm")
public String processForm(@ModelAttribute("student") Student theStudent){
System.out.println("theStudent :"+ theStudent.getLastName());
return "form-details";
}
//@ModelAttribute("student") Student theStudent
//Spring automatically populates the object data with form data all behind the
//scenes
теперь, наконец, у нас есть form-details.jsp
<b>Student Information</b>
${student.firstName}
${student.lastName}
Итак, вернемся к вопросу Что такое @ModelAttribute в Spring MVC?
Пример определения из источника для вас,
http://www.baeldung.com/spring-mvc-and-the-modelattribute-annotation
@ ModelAttribute - это аннотация, которая связывает параметр метода или возвращаемое значение метода с именованным атрибутом модели, а затем предоставляет его веб-представлению.
На самом деле происходит то, что он получает все значения вашей формы, которые были отправлены им, а затем удерживает их для привязки или присвоения их объекту.
Он работает так же, как @ RequestParameter , где мы получаем только параметр и присваиваем значение некоторому полю.
Единственное отличие: @ ModelAttribute содержит все данные формы, а не один параметр. Он создает для вас bean-компонент, который содержит отправленные данные формы для последующего использования разработчиком.
Чтобы подвести итог всего этого.
Шаг 1 :
Запрос отправлен, и наш метод showForm запускается, и модель, временный бин устанавливается с именем студента, перенаправляется в форму.
theModel.addAttribute («студент», новый студент ());
Шаг 2:
modelAttribute = "студент"
При заполнении формы модель меняет студента, и теперь она содержит все параметры формы
Шаг 3:
@ ModelAttribute («студент») Студент theStudent
Мы извлекаем удерживаемые значения с помощью @ ModelAttribute и назначаем весь компонент / объект ученику.
Шаг 4:
И затем мы используем его, как мы делаем ставку, так же, как показывать его на странице и т. Д., Как я сделал
Надеюсь, это поможет вам понять концепцию. Спасибо