我试图从我的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>
以下是我的控制器
@ResponseBody
@RequestMapping(value = "/getNodes.htm",produces="application/json")
public List<NodeDTO> getNodes() {
...
return nodes;
}
我在浏览器中遇到406错误,在服务器日志中出现异常。我的浏览器正确发送Accept标头有application / json。但我仍然面临着这个问题。我经历了很多论坛,没有人解决我的问题。请帮我解决一下
答案 0 :(得分:2)
您的@RequestMapping
注释不正确,尤其是使用扩展程序.htm
。
应该是
@RequestMapping(value = "/getNodes.json",produces="application/json")
或者
@RequestMapping(value = "/getNodes",produces="application/json")
Spring MVC使用URL的扩展来标识要返回的内容类型。在您的情况下,您指定了.htm
的扩展名,Spring将其解释为HTML。但是,这会与注释的produces
属性冲突,后者指定JSON。
我不清楚Spring是如何处理冲突内容类型的,例如,如果您将.htm
扩展名替换为.json
或完全删除扩展名,那么您就不会# 39;不用担心。