Использование методов PUT и DELETE в Spring MVC
я пытаюсь использоватьRequestMethod.PUT
а такжеRequestMethod.DELETE
в Spring MVC контроллер (версия 3.0.2). Существует три метода, сопоставленных с URL-адресом в классе контроллера Spring следующим образом (PUT, GET и POST соответственно, только для демонстрационных целей).
@RequestMapping(method = {RequestMethod.PUT}, value = {"admin_side/Temp"}, headers = {"content-type=multipart/form-data"})
public String update(@ModelAttribute("tempBean") TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response) {
if (ServletFileUpload.isMultipartContent(request)) {
System.out.println("true");
}
System.out.println("Request method PUT");
return "admin_side/Temp";
}
@RequestMapping(method = {RequestMethod.GET}, value = {"admin_side/Temp"})
public String showForm(@ModelAttribute("tempBean") TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response) {
System.out.println("Request method GET");
return "admin_side/Temp";
}
@RequestMapping(method = {RequestMethod.POST}, value = {"admin_side/Temp"})
public String onSubmit(@ModelAttribute("tempBean") TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response) {
System.out.println("Request method POST");
return "admin_side/Temp";
}
Когда страница загружена,GET
метод вызывается как очевидный, но во всех других случаях (когда страница отправлена), единственный метод, который должен быть вызванPOST
, метод обозначенRequestMethod.PUT
никогда не вызывается.
Форма Spring содержит только кнопку отправки и браузер изображений как,
Сгенерированный HTML выглядит следующим образом:
В моем (spring-config.xml
dispatcher-servlet.xml
в моем случае) я добавил ссылку на:CommonsMultipartResolver
и в моемweb.xml
файл,HiddenHttpMethodFilter
настроен следующим образом,
MultipartFilter
org.springframework.web.multipart.support.MultipartFilter
multipartResolverBeanName
filterMultipartResolver
MultipartFilter
/*
HiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
HiddenHttpMethodFilter
/*
PUT
(а такжеDELETE
тоже) метод никогда не вызывается (без исключений и ошибок). Что мне здесь не хватает?
Обновить :
Со следующей конфигурацией вweb.xml
MultipartFilter
org.springframework.web.multipart.support.MultipartFilter
multipartResolverBeanName
filterMultipartResolver
MultipartFilter
dispatcher
HiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
HiddenHttpMethodFilter
dispatcher
это бросает следующее исключение.
org.springframework.beans.factory.NoSuchBeanDefinitionException: ни один компонент не назван 'filterMultipartResolver» определено
Где имяdispatcher
это имя сервлета -org.springframework.web.servlet.DispatcherServlet
уже отображается в web.xml следующим образом.
dispatcher
org.springframework.web.servlet.DispatcherServlet
2
dispatcher
*.htm
Я не уверен, что еще нужно? Это фильтрHiddenHttpMethodFilter
требуется реализовать самостоятельно расширениеOncePerRequestFilter
что-то вроде показанногоВот? (это встроенный класс)
Важные пункты перечисленыВот.