2016-03-24 23 views
0

Bir sorum var. formController'da bir işlev üzerinde @ModelAttribute kullanıyorum.@ModelAttribute, jsp'ye nasıl gönderilir?

@ModelAttribute("modelAttrVar") 
public ModelAttr function(){ 
    ModelAttr obj = new ModelAttr(); 
    //...code 
    return obj; 
} 

Ama bu model niteliği ben dönüyorum ModelAndView eklenmez .....

public ModelAndView func2(){ 
    ModelAndView obj = new ModelAndView(); 
    obj.addAttribute("variableName" , value); 
    obj.setViewName("viewName"); 
    return obj; 
} 

ben jsp görünce Şimdi o zaman modeli modelAttrVar jsp mevcuttur ve bir değişken Özellik değerler vermek. Nasıl ??

Lütfen Yardım!

cevap

0

Net olmayan bir şey var!

@ModelAttribute ek açıklaması, denetleyicide kullanılabilen, html biçiminde yazılan tüm alanların olması için jsp içindeki bir formu denetleyiciye bağlamak için kullanılır. bir post isteği (form gönderme) sonra

What is @ModelAttribute in Spring MVC?

Yani temelde @ModelAttribute ile açıklamalı bir yöntem landing point yöntem olarak çalışmalarını olmalıdır.

<form:form action="/greeting" > 
<form:input path="name" /> 
<form:input path="lastName" /> 

<input type="submit" value="Submit" /> 
</form:form> 

public class ModelAttrExample { 

String name; 
String lastName; 

///getter and setter... 
} 

JSP indexForm.jsp ve form varmış bir 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... 
    } 
} 

:

Yani Bir örnek alalım, iki değişkeni bulunan POJO var greetingSubmit() yönteminin tetiklendiği ve ModelAttrExample örneğinin sunulduğu Formun verileri ile doldurulmuş, yöntem içinde mevcut olacaktır.

so ... @ModelAttribute, html form alanından değerler almak ve bu verileri bir sınıf örneği değişkenleri içine almak için kullanılır.

ki sen ... Çok iyi yazılmış olabilir ve :)

+0

sayesinde Sir sormaya çekinmeyin Daha fazla bilgiye ihtiyacınız varsa çok kolay

anlamak Spring, bu öğretici takip öneriyoruz cevabınızı. Aslında durum, liste ekranından bir kayıt açmamızdır. Çağrı, FormController'a gider ve burada, @ModelAttribute ("modelAttrVar") public ModelAttr işlevi() {} , db'den belirli bir kaydı ayıklayan modelAttribute işlevine gider. Sonra func2() 'den sonra modelAndView alır ve nihayet jsp'ye gideriz. Ve sonra jsp'de modelAttrVar model Niteliği $ {modelAttrVar.var1} gibi elde ederiz. –

+0

Yani bir kayıt açarken bu modelAttrVar'ı hiçbir zaman ModelAndView'a eklemiyoruz, ancak yine de jsp'ye gidiyor ve modelAttrVar nesnesinden veriler jsp sayfasındaki ilgili alanları doldurmaktadır. Nasıl? –

+0

Akışınızı hala anlayamadım, "Sonra func2() 'yi aldıktan sonra func2()' yi çağıran modelAndView alıyoruz)? Bu yöntemde modeli ve görünümü nasıl alırsınız? Bir listeden bir kayıt seçicisini göstermeniz gerekiyorsa, örneğin kimliği kullanarak bir yöntemi tetikleyebilir, verileri db'den alabilir ve ayıklanan değeri modelle oluşturabilirsin.addAttribute ("modelAttrVar", youExtracteInstanceOfmodelAttrVar); ve sonra jsp'de değerleri $ {modelAttrVar.var1} ile alın, lütfen tüm kodu gösterin ve tam olarak ne yapmanız gerektiğini açıklayın. – daN

İlgili konular