2016-03-24 3 views
0

У меня есть запрос. Я использую @ModelAttribute для функции в formController.Как @ModelAttribute отправляет данные на jsp

@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; 
} 

Теперь, когда я вижу СПЯ то модель атрибутов переменной modelAttrVar доступна в JSP и давая значения. Как ??

Пожалуйста, помогите !!

ответ

0

Есть что-то непонятное!

Аннотации @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, Это очень хорошо написана и очень легко понять

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

+0

Спасибо сэр ... для ваш ответ. На самом деле это случай, когда мы открываем запись из экрана списка. Звонок идет в FormController, и там он переходит к функции modelAttribute @ModelAttribute ("modelAttrVar") public ModelAttr function() {} , который извлекает конкретную запись из db. Затем после func2() мы получаем modelAndView, а затем, наконец, переходим к jsp. И тогда в jsp мы получаем атрибут modelAttrVar, например $ {modelAttrVar.var1}. –

+0

Таким образом, при открытии записи мы никогда не добавляем эту модельAttrVar в ModelAndView, но она по-прежнему относится к jsp, а данные объекта modelAttrVar заполняют соответствующие поля на странице jsp. Как? –

+0

Я все еще не понимаю ваш поток, вы сказали: «Тогда после func2() мы получаем modelAndView», который вызывает func2()? Как вы получаете модель и представление в этом методе? Если вам нужно просто показать запись selectec из списка, например, вы можете вызвать метод, проходящий через get id, взять данные из db и вывести извлеченное значение с помощью модели.addAttribute ("modelAttrVar", youExtracteInstanceOfmodelAttrVar); а затем в jsp возьмите значения с помощью $ {modelAttrVar.var1}, пожалуйста, покажите весь код и объясните, что именно вам нужно сделать – daN

Смежные вопросы