2013-01-12 17 views
5

मैं स्प्रिंग 3.1 का उपयोग कर रहा हूं और मेरे पास एक हैंडलर है जो स्ट्रिंग मान वापस करना चाहिए। यहाँ कैसे मेरी हैंडलर की तरह लग रहा है:अतिरिक्त उद्धरण

@RequestMapping(value = TEST_HANDLER_PATH, method = RequestMethod.POST) 
public ResponseEntity<String> handleTest(HttpServletRequest request, 
    @RequestParam("parma1") String param) throws Exception { 
    String ret = ... 
    ... 
    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Content-Type", "text/plain;charset=utf-8"); 
    return new ResponseEntity<String>(ret, headers, HttpStatus.CREATED); 
} 

मैं भी @ResponseBody साथ की कोशिश की व्याख्या विधि return ret; साथ अंत में।

दोनों मामलों में, जब मैंने सेवा को मारा, तो मुझे स्ट्रिंग मान (उदा। "This is a test") के आसपास अतिरिक्त उद्धरण प्राप्त हुए। मुझे लगता है कि यह संदेश रूपांतरण के कारण है। यही कारण है कि मैंने Content-Type हेडर को परिभाषित करने की कोशिश की, स्ट्रिंगहट्प मैसेज कनवर्टर को स्पष्ट रूप से हिट करने के लिए, इसका कोई फायदा नहीं हुआ।

उत्तर

-2

बाहर निकलता है एक आयात में पंजीकृत एक JSON संदेश कनवर्टर था।

+1

क्या आपने JSON संदेश कनवर्टर को हटा दिया था? क्या होगा यदि आप संदेश कनवर्टर को हटाना नहीं चाहते हैं? –

+0

आप अनुरोध/प्रतिक्रिया शीर्षलेख में संबंधित एमआईएम प्रकार का उपयोग कर विशिष्ट कनवर्टर को लक्षित कर सकते हैं। हुड के नीचे एक नज़र रखना मुझे मदद मिली है। – cbaby

7

एक ही समस्या थी।

बस सुनिश्चित करें कि आप org.springframework.http.converter.StringHttpMessageConverter के साथ-साथ अपने जैक्सन को पंजीकृत करते हैं ताकि स्ट्रिंग्स का शाब्दिक रूप से व्यवहार किया जा सके और JSON (अतिरिक्त उद्धरणों के साथ) में परिवर्तित होने का प्रयास न किया जाए।

बस अपने पसंदीदा वर्णसेट के साथ डिफ़ॉल्ट कन्स्ट्रक्टर या कन्स्ट्रक्टर के साथ तुरंत चालू करें। मीडिया प्रकारों को मानक आंतरिक डिफ़ॉल्ट के साथ आपके लिए सेट किया जाना चाहिए। यदि आप WebMvcConfigurerAdapter को विस्तारित कोड के माध्यम से कॉन्फ़िगर कर रहे हैं तो आप कन्वर्टर्स को configureMessageConverters(List<HttpMessageConverter<?>> converters) विधि में जोड़ दें।

class SerializableToString implements Converter<Serializable, String> 

कि सीमित (केवल मेरे सेम के लिए),:

+0

यह मेरे लिए काम किया। इसके अलावा 'StringHttpMessageConverter' को किसी अन्य कनवर्टर से पहले' सूची > 'में जोड़ा जाना चाहिए। आदेश महत्वपूर्ण है, जब आप उन्हें स्पष्ट रूप से कॉन्फ़िगर करते हैं –

0

मेरे मामले में, मैं ओवर-इंजीनियर=)

इस तरह सेम के toString संचालन के लिए एक कनवर्टर पेश किया था समस्या का समाधान एक्स)

नोट: ब्रेकपॉइंट @org.springframework.core.convert.support.GenericConversionService.getConverter के साथ डिबगिंग में मदद मिली।

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