java - org.springframework.web.HttpMediaTypeNotAcceptableException Spring MVC 4.2.5

标签 java json spring spring-mvc

我正在尝试从 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/

相关文章:

java - 在 WinSCP 中如何知道 SFTP 是否成功

java - 有没有一种简单的方法可以使用 RestEasy 通过 JSON 传递对象集合?

java - 尝试在我的 Spring 项目中获取 InputStream 时出现 Http 502 错误

c# - JToken.ToString() 删除大括号

javascript - 如何将任意 JSON 对象返回到 jQuery 自动完成列表?

java - 如何合并 springframework.beans.factory.UnsatisfiedDependencyException 堆栈跟踪?

java - 在执行中使用@RefreshScope时如何保持数据一致

java - 如何使用 oozie 协调器延迟工作流操作

java - 如何在java中处理圆和半圆碰撞的 react ?

java - EntityNotFoundException LEFT JOIN JPA - Hibernate