2012-12-22 12 views
6

में पारित नहीं किए जा रहे हैं मुझे वसंत और एक पोस्ट अनुरोध में समस्या है। मैं एक अजाक्स कॉल के लिए एक नियंत्रक विधि सेट कर रहा हूं, किस तरह से मैं HTML कॉल कर कोई फर्क नहीं पड़ता नीचेवसंत @RequestParam तर्क POST विधि

@RequestMapping(value = "add.page", method = RequestMethod.POST) 
@ResponseBody 
public Object createComment(
     @RequestParam(value = "uuid", required = false) String entityUuid, 
     @RequestParam(value = "type", required = false) String entityType, 
     @RequestParam(value = "text", required = false) String text, 
     HttpServletResponse response) { 
     .... 

विधि परिभाषा देखें, @RequestParam पैरामीटर के लिए मान हमेशा अशक्त हैं। मेरे पास ऐसी कई अन्य विधियां हैं जो इस तरह दिखती हैं, मुख्य अंतर यह है कि अन्य तरीकों को प्राप्त करते हैं, जबकि यह एक पोस्ट है। क्या POST विधि के साथ @RequestParam का उपयोग करना संभव नहीं है?

मैं वसंत संस्करण 3.0.7 का उपयोग कर रहा हूं .RELEASE - क्या किसी को पता है कि समस्या का कारण क्या हो सकता है?


अजाक्स कोड:

$.ajax({ 
    type:'POST', 
    url:"/comments/add.page", 
    data:{ 
     uuid:"${param.uuid}", 
     type:"${param.type}", 
     text:text 
    }, 
    success:function (data) { 
     // 
    } 
}); 
+1

आपका AJAX कोड क्या है? –

+0

मैंने अजाक्स कोड के साथ प्रश्न अपडेट किया है। कुछ मुझे बताता है कि मैं अनुरोध निकाय में पैरामीटर पास कर रहा हूं और अनुरोध पैरामीटर की अपेक्षा नहीं करता हूं :( –

+0

'@ अनुरोधपाराम 'पोस्ट और जीईटी विधि (और पारदर्शी तरीके से) दोनों के साथ काम करता है। आप किस एन्कोडिंग का उपयोग कर रहे हैं? POST हमेशा यूटीएफ -8 का उपयोग कर रहा है। –

उत्तर

19

समस्या निकला तरह से मैं विधि बुला रहा था हो सकता है। मेरा AJAX कोड अनुरोध निकाय में सभी मानकों को पारित कर रहा था, अनुरोध पैरामीटर के रूप में नहीं, इसलिए मेरा @RequestParam पैरामीटर सभी खाली थे। मैं अपने ajax कोड बदल दिया है:

$.ajax({ 
    type: 'POST', 
    url: "/comments/add.page?uuid=${param.uuid}&type=${param.type}", 
    data: text, 
    success: function (data) { 
     // 
    } 
}); 

मैं भी अनुरोध शरीर से पाठ लेने के लिए मेरी नियंत्रक पद्धति को बदल:

@RequestMapping(value = "add.page", method = RequestMethod.POST) 
@ResponseBody 
public Object createComment(
     @RequestParam(value = "uuid", required = false) String entityUuid, 
     @RequestParam(value = "type", required = false) String entityType, 
     @RequestBody String text, 
     HttpServletResponse response) { 

और जैसा कि मैं उम्मीद अब मैं पैरामीटर हो रही है।