2013-08-30 11 views
32

पर JSON डेटा पास करने के लिए मुझे स्प्रिंग एमवीसी नियंत्रक को JSON स्ट्रिंग भेजने की आवश्यकता है। लेकिन मुझे पर कोई फॉर्म बाइंडिंग नहीं है, मुझे बस नियंत्रक वर्ग में एक सादा JSON डेटा भेजने की आवश्यकता है। मैं हूँ नीचे दिए गए कोड की तरह नियंत्रक विधि में jQuery AJAX कॉल करना।एक वसंत एमवीसी नियंत्रक

$.ajax ({ 
    url: "./save", 
    type: "POST", 
    data: JSON.stringify(array), 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    success: function(){ 
     alert("success "); 
    } 
}); 

लेकिन यह कैसे मैं नियंत्रक विधि में इसे पुनः प्राप्त करते हैं (नोट: यह सिर्फ सादा JSON डेटा और नहीं एक फार्म प्रस्तुत है)?।

उत्तर

42

निम्नलिखित निर्भरता

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.7</version> 
</dependency> 

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.7</version> 
</dependency> 

संशोधित अनुरोध के रूप में

$.ajax({ 
    url:urlName,  
    type:"POST", 
    contentType: "application/json; charset=utf-8", 
    data: jsonString, //Stringified Json Object 
    async: false, //Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation 
    cache: false, //This will force requested pages not to be cached by the browser   
    processData:false, //To avoid making query String instead of JSON 
    success: function(resposeJsonObject){ 
     // Success Message Handler 
    } 
}); 

नियंत्रक पक्ष इस प्रकार जोड़े

@RequestMapping(value = urlPattern , method = RequestMethod.POST) 
public @ResponseBody Person save(@RequestBody Person jsonString) { 

    Person person=personService.savedata(jsonString); 
    return person; 
} 

@RequestBody - जावा के लिए गुप्त Json वस्तु
@ResponseBody - json के लिए जावा वस्तु कन्वर्ट

+0

उपयोग कर सकते हैं कृपया व्यक्ति –

+0

के बारे में उर मान्यताओं जोड़ने व्यक्ति एक सामान्य POJO वर्ग है। यहां हम टाइप व्यक्ति के डेटा का उपयोग कर रहे हैं। –

4
  1. एचटीएमएल

    $('#save').click(function(event) {   
        var jenis = $('#jenis').val(); 
        var model = $('#model').val(); 
        var harga = $('#harga').val(); 
        var json = { "jenis" : jenis, "model" : model, "harga": harga}; 
        $.ajax({ 
         url: 'phone/save', 
         data: JSON.stringify(json), 
         type: "POST",   
         beforeSend: function(xhr) { 
          xhr.setRequestHeader("Accept", "application/json"); 
          xhr.setRequestHeader("Content-Type", "application/json"); 
         }, 
         success: function(data){ 
          alert(data); 
         } 
        }); 
    
        event.preventDefault(); 
    }); 
    
    1. नियंत्रक

      @Controller 
      @RequestMapping(value="/phone") 
      public class phoneController { 
      
          phoneDao pd=new phoneDao(); 
      
          @RequestMapping(value="/save",method=RequestMethod.POST) 
          public @ResponseBody 
          int save(@RequestBody Smartphones phone) 
          { 
           return pd.save(phone); 
          } 
      
    2. दाव

      public Integer save(Smartphones i) { 
          int id = 0; 
          Session session=HibernateUtil.getSessionFactory().openSession(); 
          Transaction trans=session.beginTransaction(); 
          try { 
           session.save(i); 
           id=i.getId(); 
           trans.commit(); 
          } 
          catch(HibernateException he){} 
          return id; 
      } 
      
+0

.val() फ़ंक्शन कहां से आता है? – MNM

1

आप JSON.stringify (JSONObject) के साथ JSON वस्तु stringify कर सकते हैं और स्ट्रिंग के रूप में नियंत्रक पर यह प्राप्त करते हैं।

नियंत्रक में, आप इसे बदलने और कुशल बनाने के लिए javax.json का उपयोग कर सकते हैं।

प्रोजेक्ट libs में .jar डाउनलोड और जोड़ें और जेसनऑब्जेक्ट आयात करें।

एक json वस्तु बनाने के लिए, आप

JsonObjectBuilder job = Json.createObjectBuilder(); 
job.add("header1", foo1); 
job.add("header2", foo2); 
JsonObject json = job.build(); 

उपयोग कर सकते हैं स्ट्रिंग से पढ़ने के लिए, आप

JsonReader jr = Json.createReader(new StringReader(jsonString)); 
JsonObject json = jsonReader.readObject(); 
jsonReader.close(); 
संबंधित मुद्दे