2012-10-03 9 views
12

स्प्रिंग एमवीसी के साथ, मुझे पता है कि आप प्रत्येक नियंत्रक और विधि/क्रिया में RequestMapping कैसे सेट करते हैं।वसंत एमवीसी अनुरोध मानचित्रण, क्या यह गतिशील/विन्यास योग्य हो सकता है?

लेकिन क्या होगा अगर मैं इस, विन्यास बनना चाहता था तो उदाहरण मैं निम्नलिखित नियंत्रकों के लिए:

BlogController 
- with methods for listing blogs entries, single entry, new, update, etc. 
ArticleController 
- with methods for listing articles entries, single entry, new, update, etc. 
अब

अपने आवेदन में है, तो व्यवस्थापक सेटअप 2 webiste के लिए ब्लॉग, और 1 लेख अनुभाग कर सकते हैं यूआरएल होगा जैसे:

www.example.com/article_section1/ - uses ArticleController 
www.example.com/blog1/ - uses BlogController 
www.example.com/blog2/ - uses BlogController 

हो सकता है कि कुछ समय बाद व्यवस्थापक एक अन्य लेख अनुभाग चाहता है, इसलिए वे सिर्फ कॉन्फ़िगर ऐसे ही एक नया अनुभाग के साथ:

www.example.com/article_section2/ 

इसे पाठ्यक्रम के आवेदन को पुनरारंभ किए बिना गतिशील रूप से/ऑन-द-फ्लाई काम करना है।

मेरा प्रश्न केवल इस बात से चिंतित है कि मैं अपने नियंत्रकों को यूआरएल मैपिंग कैसे संभालेगा।

स्प्रिंग एमवीसी के साथ यह कैसे संभव होगा?

मुझे केवल यह पता है कि नियंत्रक या विधि स्तर पर @RequestMapping("/helloWorld") का उपयोग कर नियंत्रकों को यूआरएल कैसे मैप करना है, लेकिन इससे यूआरएल मैपिंग तय हो जाती है और कॉन्फ़िगर करने योग्य नहीं है जैसे मैं इसे चाहता हूं।

अद्यतन:

मैं तो जैसे डेटाबेस में पथ भंडारण किया जाएगा, और नियंत्रक के प्रकार के मानचित्रण के साथ:

path     controller 
/article_section1/ article 
/blog1/    blog 
/blog2/    blog 
.. 
उपरोक्त जानकारी के साथ

, मैं कैसे कर सकता है प्रेषण सही नियंत्रक के लिए अनुरोध?

फिर से, नहीं पुनः लोड/पुनर्वितरित करने के लिए देख, और मुझे पता है यह अधिक काम की आवश्यकता होगी, लेकिन इसकी कल्पना :)

+1

आपने इसे कैसे कार्यान्वित किया? मैं एक वैसी ही स्थिति में हूँ। – DairyLea

उत्तर

5

में क्या आप के लिए URL मानचित्रण काम की इस तरह?

www.example.com/blog/1/ 
www.example.com/blog/2/ 

यदि हाँ, तो यह है कि आसान है: स्प्रिंग 3 पथ चर का समर्थन करता है: http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

वैकल्पिक रूप से

, आप एक सामान्य अनुरोध मानचित्रण और अपने खुद के उप डिस्पैचर है कि एक कॉन्फ़िग फ़ाइल पढ़ता बना सकते हैं, लेकिन मुझे लगता है कि शायद इसके लायक से अधिक काम।

+3

मैं यूआरएल पर पूरा नियंत्रण चाहता हूं, मुझे पथ चर के बारे में पता है धन्यवाद। असल में मैं डेटाबेस से पथ पढ़ने जा रहा हूं, और फिर किसी भी तरह से सही नियंत्रक को अनुरोध अग्रेषित करता हूं, लेकिन यह सुनिश्चित नहीं करता कि कैसे। – loyalflow

0

यह काम नहीं करता है? @RequestMapping ("/ helloWorld *")

2

रनटाइम पर अनुरोध मैपिंग को वास्तव में बदलना मुश्किल हो सकता है (और वास्तव में अनुशंसित नहीं है, क्योंकि छोटी त्रुटियां आसानी से हो सकती हैं)। यदि आप अभी भी ऐसा करना चाहते हैं, शायद जेआरबेल, और अधिक विशिष्ट रूप से लाइवरेबेल कोड और कॉन्फ़िगरेशन के लाइव पुनर्निर्माण के लिए दिलचस्प हो सकता है।

अन्यथा, सुझाए गए अन्य पदों की तरह, अनुरोध मैपिंग वाइल्डकार्ड का समर्थन करता है, इसकी सीमाएं आधिकारिक दस्तावेज़ीकरण के त्वरित पढ़ने के बाद स्पष्ट होनी चाहिए।

+2

नहीं, मैं यूआरएल पर पूर्ण नियंत्रण चाहता हूं, इसलिए यह काम नहीं करेगा, और मैं किसी भी कोड को फिर से लोड/पुनः लोड नहीं करना चाहता हूं। उम्मीद कर रहा था कि मैं किसी भी तरह से सही नियंत्रक को किसी भी तरह से अनुरोध अग्रेषित कर सकता हूं। – loyalflow

+3

अपना खुद का हैंडलर मैपिंग लिखना दिलचस्प हो सकता है http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/HandlerMapping.html –

+0

उस लिंक के लिए धन्यवाद, ऐसा लगता है दिशा निर्देश मुझे आवश्यकताएं लेनी होगी। – loyalflow

1

नीचे के रूप में वाइल्ड कार्ड @RequestMapping साथ उपयोग करके देखें:

@RequestMapping(value="/article_section*/"} 
public void getArticle(....){ 
//TODO implementation 
} 

@RequestMapping(value="/blog*/"} 
public void getBlog(....){ 
//TODO implementation 
} 

आशा इस मदद करता है !!!

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