java - Is it ok to use a ModelAttribute as a method parameter for RequestMapping method? -
मैं निम्नलिखित कोड का उपयोग कर रहा हूं:
@RequestMapping (value = "/ myUrl ", विधि = RequestMethod.GET) सार्वजनिक ModelAndView myRequestHandler (HttpServletRequest अनुरोध, HttpServletResponse प्रतिक्रिया, @ModelAttribute (value =" paramName ") @ValidMyModelForm फार्म) // अपने आप फ़ॉर्म से फार्म setters भरता है: प्रपत्र JSP दृश्य में {} निम्नलिखित लिंक पर जवाब पढ़ना मुझे संदेह करना शुरू हो रहा है कि ModelAttribute का मेरा उपयोग यहां सही नहीं है।
क्या मैं इसे सही तरीके से उपयोग कर रहा हूं ? ऐसा लगता है कि काम करना है लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मैं कुछ भी गलत नहीं कर रहा हूं।
फ़ॉर्म ऑब्जेक्ट मॉडल में एक अलग तरीके से जोड़ा जाता है, जो कोड की तरह दिखता है:
मॉडल ANDView.addObject ("formName", नया MyModelForm ()); जेएसपी दृश्य में मेरे पास commandName = "formName" के रूप में जोड़ा गया फ़ॉर्म नाम है।
सार्वजनिक ModelAndView myRequestHandler (@Valid MyModelForm फार्म) <: वर्ग = "के बाद पाठ" itemprop = "पाठ"> यह हस्ताक्षर भी पूरी तरह से आप के लिए काम किया जाना चाहिए था / प्री>
यहां स्प्रिंग एमवीसी यह सुनिश्चित करेगा कि एक MyModelForm उदाहरण बनाया गया है और आपके फ़ॉर्म से सबमिट की गई वस्तु के आधार पर बाध्य है। अब, अतिरिक्त @ModelAttribute ले: सरल मामले पहले:
सार्वजनिक ModelAndView myRequestHandler (@ModelAttribute ( "paramName") @Valid MyModelForm फार्म) यह मानते हुए कि आपके पास @ मॉडल एट्रिब्यूट के साथ कोई अन्य विधि नहीं है, ऊपर जो कुछ भी करता है वह नाम paramName नाम से एक मॉडल की खोज करता है, जो कि धारणा के कारण उपस्थित होने की संभावना नहीं है, फिर MyModelForm का एक उदाहरण बनाया जाएगा और पहले से ही बांधा जाएगा, एक अतिरिक्त के साथ जो कि अब आप ईए मॉडल ऑब्जेक्ट के साथ नाम paramName उपलब्ध है, जिसका उपयोग आप अपने दृश्य में कर सकते हैं: paramName.myformValue आदि .. संक्षेप में:
सार्वजनिक ModelAndView myRequestHandler (@ModelAttribute ( "paramName") @Valid MyModelForm फार्म) के बराबर है:
सार्वजनिक ModelAndView myRequestHandler (@Valid MyModelForm रूप है, मॉडल मॉडल) {... model.addAttribute ( "paramName", फार्म)} दूसरे, आप एक विधि @ModelAttribute साथ एनोटेट था जो प्रीलोड कहना हिस्सा अपने MyModelForm का:
@ModelAttribute ("paramName"); सार्वजनिक MyModelForm loadModel (int आईडी) {MyModelForm से डीबी = loadFromDB (आईडी); } अब, अपने विधि हस्ताक्षर का लाभ:
सार्वजनिक ModelAndView myRequestHandler (@ModelAttribute ( "paramName") @Valid MyModelForm फार्म) यह होगा कि आपके डीबी से जो मॉडल पहले से पॉपुलेटेड है, उस रूप में जो प्रस्तुत किया गया है उसे बढ़ाया जाएगा।
Comments
Post a Comment