Как @ModelAttribute отправляет данные в jsp
У меня есть запрос. я использую @ModelAttribute
на функции в formController
,
@ModelAttribute("modelAttrVar")
public ModelAttr function(){
ModelAttr obj = new ModelAttr();
//...code
return obj;
}
Но этот атрибут модели не добавляется в ModelAndView, который я возвращаю.....
public ModelAndView func2(){
ModelAndView obj = new ModelAndView();
obj.addAttribute("variableName" , value);
obj.setViewName("viewName");
return obj;
}
Теперь, когда я вижу JSP, то переменная атрибута модели modelAttrVar
доступен в JSP и дает значения. Как??
Пожалуйста помоги!!
1 ответ
Там что-то не понятно!
@ModelAttribute
аннотация используется для привязки формы внутри jsp к контроллеру, чтобы все поля, записанные в html-форме, были доступны в контроллере.
Что такое @ModelAttribute в Spring MVC?
Так что в основном метод аннотируется @ModelAttribute
должен работать как landing point
метод, после отправки запроса (форма отправки).
Итак, давайте рассмотрим пример, у вас есть POJO с двумя переменными:
public class ModelAttrExample {
String name;
String lastName;
///getter and setter...
}
JSP indexForm.jsp
<form:form action="/greeting" >
<form:input path="name" />
<form:input path="lastName" />
<input type="submit" value="Submit" />
</form:form>
и SpringController
@Controller
public class GreetingController {
@RequestMapping(value="/greeting", method=RequestMethod.GET)
public String greetingForm(Model model) {
model.addAttribute("", new ModelAttrExample ());
return "indexForm";
}
@RequestMapping(value="/greeting", method=RequestMethod.POST)
public String greetingSubmit(@ModelAttribute ModelAttrExample example, Model model) {
example.getName();//same form value
example.getLastName(); //same form value
//do your logic here...
}
}
После отправки формы greetingSubmit()
метод запущен, и экземпляр ModelAttrExample
, заполненные данными формы, будут доступны внутри метода.
Итак... @ModelAttribute используется для получения значений из поля формы html и помещения этих данных в переменные экземпляра класса.
Я предлагаю вам следовать этому уроку от Spring, он очень хорошо написан и очень прост для понимания
Если вам нужно больше информации, не стесняйтесь спрашивать:)