2010-10-10 11 views
34

मुझे 20+ फॉर्म पसंद हैं जो एक ही पेज से जुड़े हुए हैं। कुछ रूप एक ही नियंत्रक साझा करते हैं, जबकि अन्य स्वयं का उपयोग करते हैं। उदाहरण के लिए, के रूप में A, B, और C उपयोग DefaultController जबकि प्रपत्र DControllerD उपयोग करता है।स्प्रिंग एमवीसी: कंट्रोलर के लिए एकाधिक यूआरएल मैपिंग

मैं क्या प्राप्त करने के लिए चाहते हैं एक सुसंगत तरीके से प्रत्येक प्रपत्र के लिए URL मैप करने के लिए है।

तो, आदर्श, लिंक पेज लगेगा जैसे:

  • या तो इस

    <a href="/formA.html">Form A</a> 
    <a href="/formB.html">Form B</a> 
    <a href="/formC.html">Form C</a> 
    <a href="/formD.html">Form D</a> 
    
  • या इस:

    <a href="/form.html?name=A">Form A</a> 
    <a href="/form.html?name=B">Form B</a> 
    <a href="/form.html?name=C">Form C</a> 
    <a href="/form.html?name=D">Form D</a> 
    

सवाल यह है कि है प्रत्येक को मैप करने के लिए उपयुक्त नियंत्रक के लिए यूआरएल। पहले यूआरएल पैटर्न के साथ, आप formD.html से ControllerD पर मैप करेंगे, लेकिन यह सुनिश्चित नहीं है कि form[A|B|C].html को DefaultController पर कैसे मैप करें। दूसरे यूआरएल पैटर्न के साथ, मुझे यह भी नहीं पता कि कहां से शुरू करना है ...

क्या किसी ने ऐसा कुछ किया है?

उत्तर

127

कोई नहीं के बाद से यहां अभी तक पूरा जवाब दिया है लगता है:

@RequestMapping एनोटेशन अपने "मूल्य" पैरामीटर के लिए एक सरणी ले सकते हैं। पहले पद्धति का उपयोग कर नियंत्रक स्तर पर इस मैप करने के लिए, आप का प्रयोग करेंगे:

@Controller 
@RequestMapping(value={"/formA.html", "/formB.html", "/formC.html"}) 
public class ControllerA { 

} 

और फिर:

@Controller 
@RequestMapping(value="/formD.html") 
public class ControllerD { 

} 
+0

धन्यवाद स्पष्ट जवाब :) – Hossein

+0

मैं नियंत्रक के बजाय मेरी पद्धति पर इस डाल के लिए और यह बहुत अच्छा काम करता है। – user3885927

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