0

我正在运行一个带有嵌入式码头的 Spring MVC 3 maven 应用程序,配置如下:

    <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.14</version>
        <configuration>
            <scanIntervalSeconds>10</scanIntervalSeconds>
            <testClassesDirectory>/Users/mydownloads/Downloads/jackson-all-1.8.10.jar</testClassesDirectory>
            <useTestClasspath>true</useTestClasspath>
        </configuration>
    </plugin> 

如上所见,我jackson-all-1.8.10 jar在测试类路径中。

我有如下映射,当我从控制器生成 json 时,这些映射工作正常:

@RequestMapping(value="/getSomething",produces="application/json",method=RequestMethod.GET)

但是,当我尝试进行POST映射时,出现错误:415: Unsupported Media Type

我用于 POST 的注释是:

@RequestMapping(value="/postSomething", consumes="application/json", method= RequestMethod.POST)

我该如何解决这个问题,以便位于类路径中的杰克逊 jar 处理媒体类型?

在客户端上,当我请求 POST 数据时,请求具有以下标头:

Request URL:http://localhost:8080/myapp/postSomething
Request Method:POST
Status Code:415 Unsupported Media Type
**Request Headersview source**
  Accept:*/*
  Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
  Accept-Encoding:gzip,deflate,sdch
  Accept-Language:en-US,en;q=0.8
  Connection:keep-alive
  Content-Length:23
  Content-Type:application/x-www-form-urlencoded
  Cookie:JSESSIONID=1f0mox1qw67zl
  Host:localhost:8080
  Origin:http://localhost:8080
  Referer:http://localhost:8080/myapp/
  X-Requested-With:XMLHttpRequest

我有datatype: 'json'jQuery

4

1 回答 1

0

您没有Content-Type正确设置请求。

正如您在发布的标题中看到的那样,Content-Type标题值为 application/x-www-form-urlencoded,这是 jquery 默认值。

contentType: 'application/json' 在 jquery ajax 调用中使用属性。

dataType属性告诉 jquery 响应中预期的内容类型。

于 2012-10-22T15:10:18.863 回答