2015-05-21 7 views
10

में ओवरलोड कंट्रोलर विधि मेरे पास एक नियंत्रक है जिसे विभिन्न यूआरएल पैरामीटर के साथ अलग-अलग व्यवहार करने की आवश्यकता है। कुछ इस तरह:जावा स्प्रिंग

@RequestMapping(method = RequestMethod.GET) 
public A getA(@RequestParam int id, @RequestParam String query) { 
    ... 
} 


@RequestMapping(method = RequestMethod.GET) 
public A getA(@RequestParam int id) { 
    ... 
} 

लेकिन यह काम करने के लिए नहीं लगता है, मैं निम्नलिखित अपवाद:

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map '[controller name]' bean method 

वहाँ एक रास्ता है कि आवेदन विधि यूआरएल पैरामीटर के आधार पर चुनता है?

+0

के बारे में बताएं _doesn't work_ लगते होना चाहिए में उल्लेख करें। आप यह क्या करने की उम्मीद करते हैं? आपके पास उन उम्मीदों क्यों हैं? यह वास्तव में कैसे व्यवहार करता है? –

+0

प्रश्नों के लिए धन्यवाद, मैंने अपनी पोस्ट बढ़ा दी। – wildthing

+0

बस एक विधि का उपयोग करें, और '@ RequestParam'' आवश्यक' को 'false' पर सेट करें। –

उत्तर

27

मानचित्रण जो पैरामीटर वर्तमान

@RequestMapping(method = RequestMethod.GET, params = {"id", "query"}) 
public A getA(@RequestParam int id, @RequestParam String query) { 
    ... 
} 


@RequestMapping(method = RequestMethod.GET, params = {"id"}) 
public A getA(@RequestParam int id) { 
    ... 
} 
संबंधित मुद्दे