Есть что-то непонятное!
Аннотации @ModelAttribute
используется для привязки формы внутри jsp к контроллеру, чтобы иметь все поля, написанные внутри html-формы, доступные в контроллере.
What is @ModelAttribute in 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, Это очень хорошо написана и очень легко понять
Если вам нужна дополнительная информация, не стесняйтесь спросить :)
Спасибо сэр ... для ваш ответ. На самом деле это случай, когда мы открываем запись из экрана списка. Звонок идет в FormController, и там он переходит к функции modelAttribute @ModelAttribute ("modelAttrVar") public ModelAttr function() {} , который извлекает конкретную запись из db. Затем после func2() мы получаем modelAndView, а затем, наконец, переходим к jsp. И тогда в jsp мы получаем атрибут modelAttrVar, например $ {modelAttrVar.var1}. –
Таким образом, при открытии записи мы никогда не добавляем эту модельAttrVar в ModelAndView, но она по-прежнему относится к jsp, а данные объекта modelAttrVar заполняют соответствующие поля на странице jsp. Как? –
Я все еще не понимаю ваш поток, вы сказали: «Тогда после func2() мы получаем modelAndView», который вызывает func2()? Как вы получаете модель и представление в этом методе? Если вам нужно просто показать запись selectec из списка, например, вы можете вызвать метод, проходящий через get id, взять данные из db и вывести извлеченное значение с помощью модели.addAttribute ("modelAttrVar", youExtracteInstanceOfmodelAttrVar); а затем в jsp возьмите значения с помощью $ {modelAttrVar.var1}, пожалуйста, покажите весь код и объясните, что именно вам нужно сделать – daN