विभिन्न तर्कों के साथ एक ही यूआरएल पैटर्न के लिए दो विधि बनाएं


93

मेरे पास एक परिदृश्य है जहां एक url "serachUser" दो अलग-अलग मूल्य (अनुरोध पैरामीटर) userId या UserName के साथ आ सकता है।

तो इसके लिए मैंने दो तरीके बनाए हैं

public String searchUserById(@RequestParam long userID, Model model) 
public ModelAndView searchUserByName(@RequestParam String userName)

लेकिन मुझे एंबिग्स मैपिंग मिल रही है जो अपवाद है। वसंत के पास इस स्थिति को संभालने का कोई तरीका है।

जवाबों:


197

आप paramsHTTP मापदंडों द्वारा फ़िल्टर करने के लिए पैरामीटर का उपयोग कर सकते हैं । आपके मामले में यह कुछ इस तरह होगा:

@RequestMapping(value = "/searchUser", params = "userID")
public String searchUserById(@RequestParam long userID, Model model) {
  // ...
}

@RequestMapping(value = "/searchUser", params = "userName")
public ModelAndView searchUserByName(@RequestParam String userName) {
  // ...
}

जिस तरह से मैंने इसे संभाला था वह पैरामीटर को स्ट्रिंग के रूप में स्वीकार करना है, फिर उस पर Long.parseLong () कॉल करें। यदि यह पार्स करता है, तो इसका यूजरआईडी, यदि यह नहीं है, तो इसके उपयोगकर्ता नाम को मान लें।
कोडशिम

9
यदि आप यह जानना चाहते हैं कि जब आपके पास कई params = { "storeId", "containerLabel" }
पारम

यदि url मैपिंग और अन्य सभी पैरामीटर समान हैं, तो क्या यह परिनियोजन के समय को अपवाद देता है?
जनथ

लेकिन क्या इस url को अधिकृत करने के लिए अलग-अलग भूमिका / कार्य सौंपना संभव होगा?
कानागावेलु सुगुमार

2
संबंधित: स्वैगर पूरी तरह से इसका समर्थन नहीं कर सकता है। मुझे यह मुद्दा मिला github.com/springfox/springfox/issues/1828 । मैं का उपयोग स्प्रिंग फॉक्स 2.7.0 और स्वैगर यूआई केवल 2. जाहिर है इस द्वारा निर्धारित किया जा सकता है के बजाय 1 विधि से पता चलता enableUrlTemplating(true)है और एक प्रयोगात्मक स्वैगर UI का उपयोग: springfox.github.io/springfox/docs/current/...
स्टेफ़नी

0

किसी भी तरह से अनुरोध परम शून्य की अनुमति दी जाती है यदि आप किसी भी मूल्य को पास नहीं करते हैं तो यह शून्य हो जाएगा तो आप अपना आधार लिख सकते हैं:

@RequestMapping(value = "/searchUser", params = {"userID","userName"})
public String searchUserById(@RequestParam long userID,@RequestParam String 
userName, 
Model model) {    
if(userID != null){
//..
}else{
// ...
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.