Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 弹簧返回处理程序方法不正确_Spring_Rest_Spring Mvc - Fatal编程技术网

Spring 弹簧返回处理程序方法不正确

Spring 弹簧返回处理程序方法不正确,spring,rest,spring-mvc,Spring,Rest,Spring Mvc,我正在使用JBoss6.1、Spring3.2、hibernate验证以及最近启用的CORS支持。如果使用了请求方法POST,我希望控制器返回405。但我得到的是http状态码400。我在jboss日志中启用了跟踪,发现spring返回了错误的处理程序。应用程序只有一个控制器接受POST请求方法,其余控制器定义为只接受GET方法。每当使用POST请求方法对这些控制器(用GET定义)发出请求时,Spring都会试图找到一个处理程序,但它会以某种方式将处理程序与POST方法相匹配。谢谢你的帮助 支持

我正在使用JBoss6.1、Spring3.2、hibernate验证以及最近启用的CORS支持。如果使用了请求方法POST,我希望控制器返回405。但我得到的是http状态码400。我在jboss日志中启用了跟踪,发现spring返回了错误的处理程序。应用程序只有一个控制器接受POST请求方法,其余控制器定义为只接受GET方法。每当使用POST请求方法对这些控制器(用GET定义)发出请求时,Spring都会试图找到一个处理程序,但它会以某种方式将处理程序与POST方法相匹配。谢谢你的帮助

支持CORS选项的Web.xml

<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>
卷曲反应:

HTTP/1.1400错误请求 服务器:ApacheCoote/1.1 X-Spatial-Web-Service-Version:2.0.0 内容类型:text/html;字符集=utf-8 内容长度:1079 日期:2013年11月18日星期一23:14:11 GMT 连接:关闭

这是我的控制器方法,它使用hibernate bean Validation 1.1:

@RequestMapping(value = "myrequest", method = GET, produces = TEXT_XML_VALUE)
@ResponseBody
public String getDetails(
@Valid DetailRequest detailRequest, BindingResult results, HttpServletResponse resp) {
...
}

请更改RequestMapping method=POST,然后重试

curl -i -X POST -H "Content-type:application/json" -d    '{"param1":"value1","param2":"value2"}' http://localhost:8080/api/myrequest
@RequestMapping(value = "myrequest", method = GET, produces = TEXT_XML_VALUE)
@ResponseBody
public String getDetails(
@Valid DetailRequest detailRequest, BindingResult results, HttpServletResponse resp) {
...
}