Как @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, он очень хорошо написан и очень прост для понимания

Если вам нужно больше информации, не стесняйтесь спрашивать:)

Другие вопросы по тегам