2011-06-15 11 views
5

में दोनों मल्टीपार्ट और गैर बहुखण्डीय HTTP पदों हैंडलिंग मैं जो इस तरह दिखता है फ़ाइलों को अपलोड करने के लिए एक SpringMVC वेब सेवा है:वसंत MVC

@RequestMapping(value="/upload.json", method = RequestMethod.POST) 
public @ResponseBody Map<String, Object> upload(MultipartHttpServletRequest request) { 
    // upload the file 
} 

और सब कुछ dandy है। लेकिन अगर उपभोक्ताओं में से एक एक गैर बहुखण्डीय रूप से पोस्ट है, तो मैं इस अपवाद

java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest] 

कौन समझ में आता है मिलता है .. लेकिन मैं अपने अंत उपयोगकर्ताओं 500 सर्वलेट अपवादों को देखने के लिए नहीं चाहते। मुझे एक दोस्ताना त्रुटि संदेश चाहिए।

मैं सिर्फ यह (अन्य पदों के लिए एक सर्व-तरह बनना) की कोशिश की:

@RequestMapping(value="/upload.json", method = RequestMethod.POST) 
public @ResponseBody Map<String, Object> upload2(){ 
// return friendly msg 
} 

लेकिन मैं इस त्रुटि मिलती है:

java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path '/upload.json' 

वहाँ किसी भी तरह से सुरक्षित रूप से संभाल करने के लिए दोनों बहुखण्डीय और गैर है -मल्टीपार्ट POST अनुरोध? एक विधि में, या 2 अलग-अलग तरीकों से मुझे परवाह नहीं है।

उत्तर

14

चेक यदि अनुरोध एक बहुखण्डीय खुद है:

@RequestMapping(value="/upload.json", method = RequestMethod.POST) 
public @ResponseBody Map<String, Object> upload(HttpServletRequest request) { 
    if (request instanceof MultipartHttpServletRequest) { 
     // process the uploaded file 
    } 
    else { 
     // other logic 
    } 
} 
+0

ओह रेड, यह काम करता है। मुझे लगता है कि मैं इसे अधिक सोच रहा था। डोमो। – icchanobot

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