स्प्रिंग एमवीसी से मॉडलएंड व्यू में मॉडल क्या है?


86

इस मूल कार्य के बाद

protected ModelAndView handleRequestInternal(...) {
    ...
    return new ModelAndView("welcomePage", "WelcomeMessage", message);
}

मुझे पता है कि यह modelandView वापस कर देगा। मुझे पता है कि welcomePageयह मेरा viewname है तो इसका मतलब है कि कुछ इस तरह welcomepage.jspबुलाया जाएगा।

लेकिन मैं क्या मॉडल हिस्सा है के साथ उलझन में हूँ। क्या है WelcomeMessageऔर messageऔर कैसे उस परिदृश्य में मॉडल काम करता है?

जवाबों:


114

मॉडल उस प्लेसहोल्डर को प्रस्तुत करता है जिसे आप दृश्य पर प्रदर्शित करना चाहते हैं। यह एक स्ट्रिंग हो सकती है, जो आपके उपरोक्त उदाहरण में है, या यह गुणों का गुच्छा युक्त एक वस्तु हो सकती है।

उदाहरण 1

यदि आपके पास है...

return new ModelAndView("welcomePage","WelcomeMessage","Welcome!");

... तो आपके जेएसपी में, संदेश प्रदर्शित करने के लिए, आप करेंगे: -

Hello Stranger! ${WelcomeMessage} // displays Hello Stranger! Welcome!

उदाहरण 2

यदि आपके पास है...

MyBean bean = new MyBean();
bean.setName("Mike!");
bean.setMessage("Meow!");

return new ModelAndView("welcomePage","model",bean);

... तो आपके जेएसपी में, आप कर सकते हैं: -

Hello ${model.name}! {model.message} // displays Hello Mike! Meow!

4
तो इसका मतलब है कि WelcomeMessage, jsp और "वेलकम!" । क्या आप मुझे बता सकते हैं कि मैं कहां से पा सकता हूं कि दूसरा तर्क क्या ले सकता है जैसे अब मैं समझता हूं कि यह चर नाम, मॉडल का नाम लेता है, क्या कोई और चीज है जो इसे ले सकती है

4
दूसरा तर्क आपके मॉडल के तार्किक नाम का प्रतिनिधित्व करता है। आप इसे अपने मनचाहे नाम से पुकार सकते हैं, लेकिन यह वह नाम है जिसका उपयोग आप अपने JSP में अपने मॉडल को संदर्भित करते समय करेंगे। अपने पहले उदाहरण में, मैंने इसे बुलाया WelcomeMessage, दूसरे उदाहरण में, मैंने इसे बुलाया model। एक ऐसे नाम का उपयोग करें जो आपके लिए महत्वपूर्ण हो। तीसरा तर्क जानकारी रखता है ... यह एक साधारण स्ट्रिंग, या पीओजेओ या एक मानचित्र हो सकता है ... मूल रूप से कोई उपयोगी जानकारी जिसे आप दृश्य में प्रदर्शित करना चाहते हैं।
अंग

24
new ModelAndView("welcomePage", "WelcomeMessage", message);

के लिए आशुलिपि है

ModelAndView mav = new ModelAndView();
mav.setViewName("welcomePage");
mav.addObject("WelcomeMessage", message);

उपरोक्त कोड को देखते हुए, आप देख सकते हैं कि नाम "वेलकमपेज" है। आपका ViewResolver(आमतौर पर सेटअप इन .../WEB-INF/spring-servlet.xml) दृश्य में इसका अनुवाद करेगा। कोड की अंतिम पंक्ति आपके मॉडल में एक विशेषता निर्धारित करती है ( addObject("WelcomeMessage", message))। यहीं से मॉडल चलन में आता है।


16

यह सब निर्माणकर्ता के लिए javadoc द्वारा समझाया गया है । यह एक सुविधा निर्माता है जो मॉडल को एक विशेषता / मूल्य जोड़ी के साथ पॉप्युलेट करता है।

इसलिए ...

   new ModelAndView(view, name, value);

के बराबर है:

   Map model = ...
   model.put(name, value);
   new ModelAndView(view, model);

14

इस मामले में, हमारे पास मेथडल्यूड नामक विधि में 3 पैरामीटर्स हैं ।
इस प्रश्न के अनुसार, पहला पैरामीटर आसानी से समझा जाता है। यह क्लाइंट को प्रदर्शित किए जाने वाले दृश्य का प्रतिनिधित्व करता है ।
अन्य दो पैरामीटर पॉइंटर और होल्डर की तरह हैं
इसलिए आप इसे इस तरह से जोड़ सकते हैं

ModelAndView ( देखें, सूचक, धारक );

सूचक सिर्फ धारक में जानकारी इंगित करता है

जब नियंत्रक इस सूचना के साथ दृश्य को बांधता है , तो उक्त प्रक्रिया में, आप ग्राहक को उस सम्मानित जानकारी को प्रदर्शित करने के लिए द होल्डर में संग्रहीत सूचना तक पहुँचने के लिए जेएसपी पृष्ठ में पॉइंटर का उपयोग कर सकते हैं । यहाँ सम्मानित प्रक्रिया का दृश्य चित्रण है।

return new ModelAndView("welcomePage", "WelcomeMessage", message);

यहाँ छवि विवरण दर्ज करें


2

खैर, वेलकमेज़ संदेश के लिए एक चर नाम है (डेटा के साथ वास्तविक मॉडल)। मूल रूप से, आप यहाँ स्वागत के साथ मॉडल को बांध रहे हैं। वेलकमपेज के रूप में स्वागत (उदाहरण) में मॉडल (संदेश) उपलब्ध होगा। यहाँ एक सरल उदाहरण है:

ModelAndView("hello","myVar", "Hello World!");

इस मामले में, मेरा मॉडल एक साधारण स्ट्रिंग है (अनुप्रयोगों में यह डीबी या अन्य स्रोतों के लिए प्राप्त डेटा के साथ एक पीओजेओ होगा।) मैं इसे myVar को सौंप रहा हूं और मेरा दृष्टिकोण hello.jsp है। अब, myVar मेरे लिए hello.jsp में उपलब्ध है और मैं इसे प्रदर्शन के लिए उपयोग कर सकता हूं।

देखने में, आप डेटा तक पहुँच सकते हैं, हालांकि:

${myVar}

इसी तरह, आप WelcomeMessage चर के माध्यम से मॉडल का उपयोग करने में सक्षम होंगे।


0

ModelAndView: नाम ही बताता है कि यह डेटा संरचना है जिसमें मॉडल और दृश्य डेटा शामिल है।

Map() model=new HashMap(); 
model.put("key.name", "key.value");
new ModelAndView("view.name", model);

// or as follows

ModelAndView mav = new ModelAndView();
mav.setViewName("view.name");
mav.addObject("key.name", "key.value");

यदि मॉडल में केवल एकल मान है, तो हम इस प्रकार लिख सकते हैं:

ModelAndView("view.name","key.name", "key.value");

0
@RequestMapping(value="/register",method=RequestMethod.POST)
   public ModelAndView postRegisterPage(HttpServletRequest request,HttpServletResponse response,
           @ModelAttribute("bean")RegisterModel bean)
   {
       RegisterService service = new RegisterService();
       boolean b = service.saveUser(bean);

       if(b)
       {
           return new ModelAndView("registerPage","errorMessage","Registered Successfully!");
       }
       else
       {
           return new ModelAndView("registerPage","errorMessage","ERROR!!");
       }
   }



/*  "registerPage" is the .jsp page -> which will viewed.
/* "errorMessage" is the variable that could be displayed in page using -> **${errorMessage}**
/* "Registered Successfully!" or "ERROR!!" is the message will be printed based on **if-else condition**
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.