JSON post to Spring Controller

java, json, spring, spring-mvc

Solution

Convert your JSON object to JSON String using

JSON.stringify({"name":"testName"})

or manually. @RequestBody expecting json string instead of json object.

Note:stringify function having issue with some IE version, firefox it will work

verify the syntax of your ajax request for POST request. processData:false property is required in ajax request

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

Controller

@RequestMapping(value = urlPattern , method = RequestMethod.POST)

public @ResponseBody Test addNewWorker(@RequestBody Test jsonString) {

    //do business logic
    return test;
}

`@RequestBody` -Covert Json object to java

`@ResponseBody` - convert Java object to json

Problem

Hi I am starting with Web Services in Spring, so I am trying to develop small application in Spring + JSON + Hibernate. I have some problem with HTTP-POST. I created a method: ``` @RequestMapping(value="/workers/addNewWorker", method = RequestMethod.POST, produces = "application/json", consumes = "application/json") @ResponseBody public String addNewWorker(@RequestBody Test test) throws Exception { String name = test.name; return name; } ``` And my model Test looks like: ``` public class Test implements Serializable { private static final long serialVersionUID = -1764970284520387975L; public String name; public Test() { } } ``` By POSTMAN I am sending simply JSON {"name":"testName"} and I always get error; ``` The server refused this request because the request entity is in a format not supported by the requested resource for the requested method. ``` I imported Jackson library. My GET methods works fine. I don't know what I'm doing wrong. I am grateful for any suggestions.

Original source