我正在尝试从 Spring Controller 获取 json 响应。我遇到异常
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
我在 pom.xml 中有与 Jackson 相关的 jar,如下所示
<properties>
<spring.version>4.2.5.RELEASE</spring.version>
<jstl.version>1.2</jstl.version>
<servletapi.version>2.5</servletapi.version>
<jackson.version>2.6.3</jackson.version>
</properties>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
下面是我的 Controller
@ResponseBody
@RequestMapping(value = "/getNodes.htm",produces="application/json")
public List<NodeDTO> getNodes() {
...
return nodes;
}
我在浏览器中收到 406 错误,在服务器日志中收到上述异常。我的浏览器正确发送包含 application/json 的 Accept header 。但我仍然面临这个问题。我浏览了很多论坛,但没有一个解决我的问题。请帮我解决一下
最佳答案
您的@RequestMapping
注释不正确,特别是扩展名.htm
的使用。
应该是
@RequestMapping(value = "/getNodes.json",produces="application/json")
或者也许
@RequestMapping(value = "/getNodes",produces="application/json")
Spring MVC 使用 URL 的扩展名来标识要返回的内容的类型。在您的例子中,您指定了 .htm
的扩展名,Spring 将其解释为 HTML。然而,这与注释的 products
属性冲突,该属性指定 JSON。
我不清楚 Spring 如何处理此类冲突的内容类型,但如果您将 .htm
扩展名替换为 .json
或完全删除该扩展名,那么你就不用担心这个问题了。
关于java - org.springframework.web.HttpMediaTypeNotAcceptableException Spring MVC 4.2.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36188413/