Required String parameter is not present error in Spring MVC
102,463
On the server side you expect your request parameters as query strings but on client side you send a json object. To bind a json you will need to create a single class holding all your parameters and use the @RequestBody annotation instead of @RequestParam.
@RequestMapping(value = "events/add", method = RequestMethod.POST)
public void addEvent(@RequestBody CommandBean commandBean){
//some code
}
Here is a more detailed explanation.
Author by
nabiullinas
Updated on July 29, 2022Comments
-
nabiullinas almost 2 years
I try to make an AJAX query to my controller in Spring MVC.
My action code is:
@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 }
My Ajax query is:
$.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 } });
But I got an error:
Required String parameter ''start_date is not present
Why? As I know I presented it like
(@RequestParam(value = "start_date") String start_date
UDP
Now I give 404 My class to take datapublic class EventData { public String end_date; public String start_date; public String text; public String userId; //Getters and setters }
My js AJAX call is:
$.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" }),
And controller action:
@RequestMapping(value = "events/add", method = RequestMethod.POST) public void addEvent(@RequestBody EventData eventData){ }
And JSON data is:
end_date: "2013-10-03T20:05:00.000Z" start_date: "2013-10-03T20:00:00.000Z" text: "gfsgsdgs" userId: "1"