2013-11-22 2 views
1

Я использую 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) { 
... 
} 

ответ

0

Изменить метод RequestMapping = POST , затем повторите попытку

Смежные вопросы