2013-10-27 7 views
13

में वर्तमान त्रुटि नहीं है मैं स्प्रिंग एमवीसी में अपने नियंत्रक को AJAX क्वेरी बनाने का प्रयास करता हूं।आवश्यक स्ट्रिंग पैरामीटर स्प्रिंग एमवीसी

मेरे कार्रवाई कोड है:

@RequestMapping(value = "events/add", method = RequestMethod.POST) 
public void addEvent(@RequestParam(value = "start_date") String start_date, @RequestParam(value = "end_date") String end_date, @RequestParam(value = "text") String text, @RequestParam(value = "userId") String userId){ 
    //some code  
} 

मेरे अजाक्स क्वेरी है:

$.ajax({ 
     type: "POST", 
     url:url, 
     contentType: "application/json", 
     data:  { 
       start_date: scheduler.getEvent(id).start_date, 
       end_date: scheduler.getEvent(id).end_date, 
       text: scheduler.getEvent(id).text, 
       userId: userId 
     }, 
     success:function(result){ 
     //here some code 
     } 
    }); 

लेकिन मैं एक त्रुटि मिली:

Required String parameter ''start_date is not present

क्यों? मैं जानता हूँ कि जैसा कि मैंने यूडीपी
(@RequestParam(value = "start_date") String start_date

की तरह प्रस्तुत किया अब मैं 404 मेरे डेटा लेने के लिए

public class EventData { 
    public String end_date; 
    public String start_date; 
    public String text; 
    public String userId; 
    //Getters and setters 
} 

मेरे js AJAX कॉल वर्ग देना है:

$.ajax({ 
    type: "POST", 
    url:url, 
    contentType: "application/json", 
    // data: eventData, 
    processData: false, 
    data: JSON.stringify({ 
     "start_date": scheduler.getEventStartDate(id), 
     "end_date": scheduler.getEventEndDate(id), 
     "text": scheduler.getEventText(id), 
     "userId": "1" 
    }), 

और नियंत्रक कार्रवाई:

@RequestMapping(value = "events/add", method = RequestMethod.POST) 
public void addEvent(@RequestBody EventData eventData){  
} 

और JSON डेटा है:

end_date: "2013-10-03T20:05:00.000Z" 
start_date: "2013-10-03T20:00:00.000Z" 
text: "gfsgsdgs" 
userId: "1" 
+0

क्या jquery अनुरोध पैरामीटर के रूप में 'डेटा' तत्वों को क्रमबद्ध करता है? यूआरएल-एन्कोडेड-फॉर्म पैराम्स के रूप में? –

+0

यह जेएस फ़ाइल – nabiullinas

+0

से सिर्फ वैरिएबल है आपके दोनों उदाहरणों में, क्या आपने वास्तव में अपने POST अनुरोध का निरीक्षण करने की कोशिश की है और यह सुनिश्चित कर लिया है कि यह वांछित मानों को पार कर रहा है? यह प्रत्येक मामले में क्या दिखा रहा है? – woemler

उत्तर

28

सर्वर साइड पर आप की क्वेरी स्ट्रिंग के रूप में आपके अनुरोध पैरामीटर उम्मीद लेकिन ग्राहक पक्ष पर आप एक json वस्तु भेजें। एक जेसन को बांधने के लिए आपको अपने सभी पैरामीटर रखने वाले एकल वर्ग को बनाने और @RequestParam की बजाय @RequestBody एनोटेशन का उपयोग करने की आवश्यकता होगी।

@RequestMapping(value = "events/add", method = RequestMethod.POST) 
public void addEvent(@RequestBody CommandBean commandBean){ 
    //some code 
} 

Here is एक और विस्तृत स्पष्टीकरण।

+0

मैंने कोशिश की। यह मेरी 400 त्रुटि खराब अनुरोध देता है – nabiullinas

+0

क्या आप वास्तविक जेएसओएन पोस्ट कर सकते हैं जिसे आप भेजने की कोशिश कर रहे हैं? आप इसे फायरबग या क्रोम/क्रोमियम से कैप्चर कर सकते हैं। – gadget

+1

क्या आप लिख सकते हैं, मैं इसे Google क्रोम में कैसे देख सकता हूं? – nabiullinas

0

मैं एक ही मुद्दा था .. मैं पोस्ट अनुरोध में config पैरामीटर निर्दिष्ट करके इसे हल: पैरामीटर मैं शामिल

var config = { 
    transformRequest : angular.identity, 
    headers: { "Content-Type": undefined } 
} 

$http.post('/getAllData', inputData, *config*).success(function(data,status) { 
    $scope.loader.loading = false; 
}) 

config किया गया था और यह काम कर रहा .. आशा है कि यह मदद करता है शुरू कर दिया:)

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