当前位置: 首页 > 知识库问答 >
问题:

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

裴俊迈
2023-03-14

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

Web.xmlCORS选项支持

<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错误请求服务器:Apache Coyote/1.1 X-Spatial-Web-Service-Version:2.0.0内容类型:text/html;charset=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) {
...
}

共有1个答案

刘浩思
2023-03-14

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

 类似资料:
  • 本文向大家介绍Spring MVC处理方法返回值过程解析,包括了Spring MVC处理方法返回值过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring MVC处理方法返回值过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于Spring MVC处理方法支持支持一系列的返回方式: (1)ModelAndView

  • 在我的Spring Boot应用程序中有以下两个方法: 我想通过(自动生成)或(,如果可用的话)来。 java.lang.IllegalStateException:映射到“/user/dis1”的处理程序方法不明确:{com.mua.cse616.model.user com.mua.cse616.controller.usercontroller.one(java.lang.long),com

  • 本文向大家介绍ThinkPHP处理Ajax返回的方法,包括了ThinkPHP处理Ajax返回的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ThinkPHP处理Ajax返回的方法,分享给大家供大家参考。具体实现方法如下: 在ThinkPHP中可以直接使用ajax返回: 而在处理过程中可以使用这个函数处理: 希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

  • 问题内容: 在学习Spring框架时,我在《 Spring in Action 》一书中注意到,作者并未在控制器中使用方法返回类型。作者将控制器方法声明为的返回类型,并且该方法中的return子句仅返回诸如以下的字符串 有人可以详细说明其工作方式的内部差异吗? 问题答案: 这是深入了解。 Spring提供了一个通常处理所有请求的类。它以其方法做到这一点 最终对象在哪里,是用注释的控制器方法的包装。

  • 我正在开发一个需要

  • 我用Java编写REST api,并使用Groovy和Spock进行测试。