Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

passing JSON data to a Spring MVC controller

I need to send a JSON string to Spring MVC controller.But I do not have any form bindings to it , I just need to send a plain JSON data to Controller class.I am making jQuery AJAX call to the Controller method like the below code.

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

But how do I retrieve it in the Controller method?(Note: It is just plain JSON data and not a form submission).

like image 760
user2702205 Avatar asked Aug 30 '13 03:08

user2702205


People also ask

How pass JSON data in MVC?

Make sure you specify POST type, as ajax method uses GET method by default. MVC Controller: Decorate the Action method with HttpPost verb. This action method will only handle http post request from browser. Ajax submission from the browser will be automatically deserialized to FormData c# class as a poco.


2 Answers

Add the following dependencies

<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> 

Modify request as follows

$.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     } }); 

Controller side

@RequestMapping(value = urlPattern , method = RequestMethod.POST) public @ResponseBody Person save(@RequestBody Person jsonString) {     Person person=personService.savedata(jsonString);    return person; } 

@RequestBody - Covert Json object to java
@ResponseBody- convert Java object to json

like image 106
Vineeth Bhaskaran Avatar answered Oct 09 '22 18:10

Vineeth Bhaskaran


  1. Html

    $('#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

      @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. Dao

      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; } 
like image 43
surya handoko Avatar answered Oct 09 '22 17:10

surya handoko