Я использую Jboss 6.1, Spring 3.2, проверку спящего режима и с поддержкой CORS. Запрос отлично работает с методом GET. Я хотел, чтобы контроллер возвращал 405, если используется метод POST запроса. Но вместо этого я получаю код статуса http 400. Я включил трассировку в журнале jboss и обнаружил, что весна возвращает неправильный обработчик. Приложение имеет только один контроллер, который принимает метод запроса POST, остальные контроллеры определены для принятия только метода GET. Всякий раз, когда для этих контроллеров (определенных с помощью GET) выполняется запрос с методом запроса POST, Spring пытается найти обработчик, но он каким-то образом сопоставляет обработчик с методом POST. Ценю вашу помощь!Метод возврата неверного обработчика весной
web.xml с вариантами CORS поддержки
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/web-application-context.xml</param-value>
</init-param>
<init-param>
<param-name>dispatchOptionsRequest</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Spring контекст XML-файл:
<mvc:annotation-driven validator="localValidatorFactoryBean">
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="customObjectMapper" />
</bean>
</mvc:message-converters>
Это мой локон сценарий:
curl -i -X POST -H "Content-type:application/json" -d '{"param1":"value1","param2":"value2"}' http://localhost:8080/api/myrequest
локон Ответ:
HTTP/1.1 400 Bad Request Сервер: Apache-Coyote/1,1 X-Пространственно-Web-Service-Version: 2.0.0 Content-Type: Текст/html; кодировка = UTF-8 Content-Length : 1079 Дата: Пн, 18 ноября 2013 23:14:11 GMT Подключение: закрыть
Это мой метод контроллера, который использует спящий режим боб validaton 1.1:
@RequestMapping(value = "myrequest", method = GET, produces = TEXT_XML_VALUE)
@ResponseBody
public String getDetails(
@Valid DetailRequest detailRequest, BindingResult results, HttpServletResponse resp) {
...
}