Spring PUT и DELETE: метод запроса не поддерживается

Я пытаюсь использовать RequestMethod.PUT и RequestMethod.DELETE в контроллере Spring MVC. У моего контроллера есть @RequestMapping для PUT и DELETE, но, несмотря на это, я получаю сообщение об ошибке при попытке его использовать:

Request method 'GET'/'POST' not supported

Контроллер:

@RequestMapping(value = "/admin/user/{id}", method = RequestMethod.PUT)
public ModelAndView updateUser(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("user") User user, @PathVariable long id) {
    ...
}

@RequestMapping(value = "/admin/user/delete/{id}", method = RequestMethod.DELETE)
public @ResponseBody ModelAndView deleteUser(HttpServletRequest request, HttpServletResponse response, @PathVariable long id) {
    ...
}

Я также добавил фильтры в web.xml:

<filter>
    <filter-name>httpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>httpMethodFilter</filter-name>
    <servlet-name>springDispatcher</servlet-name>
</filter-mapping>

Весенняя форма для PUT:

<form:form id="registerForm" method="put" action="${user.id}" modelAttribute="user" class="form-horizontal">

Сгенерированный HTML:

<form id="registerForm" class="form-horizontal" action="13" method="post"><input type="hidden" name="_method" value="put"/>

Я знаю, что если браузер не поддерживает PUT/DELETE, то используется POST/GET, но почему мой метод контроллера не вызывается?


person bartex9    schedule 22.01.2016    source источник
comment
Разве 13 не довольно странная форма?   -  person Dirk Lachowski    schedule 22.01.2016
comment
Нет почему? Это «13» добавляется к фактическому адресу, поэтому на самом деле это: /admin/user/13. Использование POST в этом случае сработало отлично.   -  person bartex9    schedule 22.01.2016
comment
См. также stackoverflow.com/questions/8250439/   -  person Raedwald    schedule 22.01.2016
comment
Вы уверены, что а) ваш фильтр выполнен и б) вы добавили конфигурацию фильтра в свой pom.xml, а не в web.xml? Где вы видите ошибку «Метод не поддерживается»?   -  person Dirk Lachowski    schedule 24.01.2016
comment
Ой, извини. Разумеется, фильтры есть в моем web.xml. Я вижу эту ошибку в браузере и в журнале сервера GlassFish.   -  person bartex9    schedule 24.01.2016
comment
Если браузер отправляет POST и GET, а вы отвечаете только на PUT и DELETE, вам никогда не позвонят.   -  person DwB    schedule 24.01.2016
comment
Просто используйте POST для обновления и удаления   -  person DwB    schedule 24.01.2016
comment
Возможный дубликат Использование методов PUT и DELETE в Spring MVC   -  person DwB    schedule 24.01.2016
comment
Хорошо, я знаю, что могу использовать GET/POST, но разве это не должно работать и с PUT/DELETE? Почему мой браузер отправляет POST/GET? Как я могу это исправить?   -  person bartex9    schedule 24.01.2016
comment
@bartex9 ты решил это?   -  person mfaisalhyder    schedule 09.03.2016
comment
К сожалению, нет. Не удалось заставить PUT/DELETE работать в моем проекте.   -  person bartex9    schedule 10.03.2016