2011-12-04 8 views
10

मुझे लगता है कि एसटीएस से बनाई गई है एक टेम्पलेट का उपयोग कर एक स्प्रिंग MVC परियोजना बनाया है और यह है कि क्या नियंत्रक में उत्पन्न किया जाता है:वसंत एमवीसी नियंत्रक विधि पैरामीटर कैसे काम करता है?

@RequestMapping(value = "/", method = RequestMethod.GET) 
public String home(Locale locale, Model model) { 
    //stuff 
} 

मेरा प्रश्न, कैसे locale और model चर home में पारित हो जाता है है तरीका?

इसके अलावा, ऑब्जेक्ट्स के लिए संभावित विकल्प क्या हैं जिन्हें विधि में पारित किया जा सकता है?

उत्तर

14

सामान्य उत्तर "वसंत जादू" है; हालांकि, वसंत संदर्भ मार्गदर्शिका के एमवीसी अध्याय में "Supported handler method arguments and return types" आपके प्रश्नों के सटीक उत्तर हैं।

+1

यह वही है जो मैं ढूंढ रहा हूं। धन्यवाद! – ryanprayogo

+0

सही उत्तर :) –

7

तकनीकी उत्तर SpringMVC हैंडलर एडाप्टर तंत्र के उपयोग के माध्यम से है।

वसंत के डिस्पैचर सर्वलेट के माध्यम से, एक हैंडलर एडाप्टर प्रत्येक प्रेषित अनुरोध के लिए बनाया और कॉन्फ़िगर किया गया है।

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

तो अनिवार्य जब वसंत प्रेषक सर्वलेट पथ "/" के साथ अनुरोध की पहचान करता है, तो यह अनुरोध मैपिंग एनोटेशन के साथ एनोटेटेड के कंटेनर में विधियों की जांच करेगा।

अपने मामले इसे खोजने यह है में ...

तो असली जादू शुरू होता है ...

जावा प्रतिबिंब का उपयोग करना, वसंत फिर अपने नियंत्रक विधि के तर्कों को हल करेंगे। तो आपके मामले में लोकेल और मॉडल स्वचालित रूप से आपके पास पास हो जाएंगे। यदि आपने पैरामीटर जैसे किसी अन्य वेब को शामिल किया है, जैसे कि HttpSession, जो आपको पास कर दिया जाएगा।

संबंधित मुद्दे