Skip to content Skip to sidebar Skip to footer

Spring And ExtJS "400 Bad Request" With PUT But Not With POST

I'm trying to send parameters with PUT from JavaScript to a Spring application. Here is the @RequestMapping in a Spring Controller: @RequestMapping(value = 'toggle-paid-action', me

Solution 1:

I suppose you can't pass parameters to spring using request method PUT as there is a restriction in the servlet API. You can only work with PUT methods implementing a restful service, passing data as the request body, in other cases (like Spring MVC Databinding) PUT won't work. see SpringMVC is not recognizing request body parameters if using PUT

JIRA: https://jira.springsource.org/browse/SPR-7414


Solution 2:

This, as suggest above, seems to be a bug in spring/servlet API. In reality PUT requests are supposed to work on Request Body (or payload) and not on Request Parameters. In that sense, servlet API & spring's handling is correct.

Having said that, a better and much easier workaround is to pass no data element from your javascript/jQuery call and pass your parameters as part of the url itself. meaning, set parameters in the url field the way you would do in a GET call.

$.ajax({
            url: "yoururl" + "?param1=param2Val&..",
            type: "PUT",
            data: "",
            success: function(response) {
                // ....
            }
     });

now this works for simple parameters, i guess, will not work for complex JSON types. Hope this helps.


Post a Comment for "Spring And ExtJS "400 Bad Request" With PUT But Not With POST"