2012-04-09 4 views
8
@RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method = RequestMethod.GET) 
public String userDetails(Map Model,****) { 
//what goes here? 
} 

userDetails विधि के लिए मेरे तर्क क्या होंगे? और मैं विधि के भीतर /userDetails और /userDetails/edit/9 को अलग कैसे करूं?पथदर्शी के साथ एकाधिक मानों के साथ अनुरोध मैपिंग - वसंत 3.0

+0

डुप्लिकेट की [इस सवाल] (http://stackoverflow.com/questions/2745471/spring-web-mvc-use-same-request-mapping-for- -

कोड इस तरह है अनुरोध-पैरामीटर-और-पथ-चर) – nobeh

उत्तर

15

आदर्श रूप में हम विधि तर्क में एनोटेशन @PathVariable का उपयोग करके pathvariable प्राप्त कर सकते हैं लेकिन यहाँ आप यूआरएल {"/userDetails", "/userDetails/edit/{id}"} की सरणी का इस्तेमाल किया है तो यह त्रुटि दे देंगे localhost:8080/domain_name/userDetails की तरह आपूर्ति अनुरोध, इस मामले में कोई आईडी @PathVariable को आपूर्ति की जाएगी, जबकि।

तो तुम विधि में अनुरोध तर्क HttpServletRequest का उपयोग करके अंतर (जो अनुरोध के माध्यम से आ रहा है) हो जाते हैं और नीचे के रूप में इस अनुरोध को वस्तु का उपयोग कर सकते हैं -

स्ट्रिंग uri = request.getRequestURI();

@RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method=RequestMethod.GET) 
    public String userDetails(Map Model,HttpServletRequest request) { 
    String uri = request.getRequestURI(); 
    //put the condition based on uri 
} 
+0

मैं विधि = requestMethod.GET और विधि = requestMethod.POST अलग से उपयोग करता हूं। उस स्थिति में, मैं एक तर्क के रूप में HttpServletRequest पास नहीं करूँगा। क्या कोई और रास्ता है? –

+6

आप इन दो अनुरोधों को दो तरीकों से अलग क्यों नहीं करते हैं? और यदि आपके पास लागू करने के लिए कोई सामान्य कार्यक्षमता है तो आप उस सामान्य कोड को अलग-अलग निजी विधि में डाल सकते हैं और तदनुसार इस विधि को कॉल कर सकते हैं। –

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