Связывание данных MVC Spring 3.0 с HTTP PUT - PullRequest
1 голос
/ 17 июля 2011

У меня есть простой контроллер Spring 3.0 с отображением запроса PUT

@Controller
public class FooController {
    @RequestMapping(value = "/foo/{id}", method = RequestMethod.PUT)
    public @ResponseBody FooView put(@PathVariable String id, @Valid PutFoo putFoo, BindingResult bindingResult) {
        inspector.inspect(bindingResult);
        return fooService.update(id, putFoo);
    }
}

Когда я выполняю PUT с параметрами Foo в теле запроса, объект PutFoo не заполняется / не связывается с этими данными. Если я добавлю HttpServletRequest к сигнатуре метода и напечатаю тело запроса, достаточно данных, но PutFoo пусто.

Если я изменю тип метода запроса на POST, а затем выполню POST, все это будет работать гармонично.

Для полноты, я нажимаю конечную точку через cURL с curl -H 'Content-Type: application/x-www-form-urlencoded' -X PUT -F "fooString=foo" <a href="http://localhost:8080/foo/9999" rel="nofollow">http://localhost:8080/foo/9999</a>

1 Ответ

1 голос
/ 17 июля 2011

Вы уверены, что действительно отправляете запрос HTTP PUT, поскольку используете конфликтующие параметры curl. Например

-F, --form

(HTTP). Это позволяет curl эмулировать заполненную форму, в которой пользователь имеет нажал кнопку отправки. Это приводит к скручиванию до POST данных с использованием Тип содержимого multipart / form-data в соответствии с RFC 2388.

источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...