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

spring 4.1.1版本和@ResponseBody返回HTTP 406

仇炜
2023-03-14

我正在使用@ResponseBody返回spring MVC中的Json对象。它在4.0.7和3.2.11版上正常工作,但当我尝试使用最新的spring 4.1.1版(截至10/16版)时,它返回HTTP状态406,没有任何其他配置更改。这是一个bug还是4.1.1需要不同的配置?

最新的jackson jar已经在类路径中

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

spring文件的例子很好用

@RequestMapping(value = "/something", method = RequestMethod.PUT)
@ResponseBody
public String helloWorld() {
  return "Hello World";
}

当返回类型为字符串时。当返回类型是POJO时就会出现问题。

共有3个答案

松思源
2023-03-14

从3.2迁移到spring 4.2的时候,我也遇到了类似的问题。正在得到

把它贴在这里,这样人们就可以通过异常名称找到它了:)我花了半天时间才找到这篇文章。谢谢@vito和@aias

如果您不想注册自定义ContentNegotiationManager,则可以执行以下操作:

从中删除所有jackson依赖项

并使用最新的

<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-base</artifactId>
    <version>2.6.1</version>
</dependency>
<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>
周睿范
2023-03-14

在删除了jackson 1.*之后,使用2.4.4(JAXRS)替换了它,它将导入所有其他依赖项,jackson核心、jackson数据绑定和jackson注释。

已删除

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

添加

<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-base</artifactId>
    <version>2.4.4</version>
</dependency>

http://www.codingpedia.org/ama/jquery-ui-autocomplete-not-working-in-spring-4-1/

在servlet xml中

<mvc:annotation-driven  content-negotiation-manager="contentNegotiationManager" />

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
     <property name="favorPathExtension" value="false" />
     <property name="favorParameter" value="true" />
     <property name="mediaTypes" >
          <value>
               json=application/json
               xml=application/xml
          </value>
     </property>
</bean>

如果在类文件中导入了jackson注释,也应该替换它

已删除

导入org.codehaus.jackson.annotate.JsonIgnoreProperties

添加

导入com.fasterxml.jackson.annotation.JsonIgnoreProperties

逑兴安
2023-03-14

Maven pom.xml:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.4.3</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.3</version>
    </dependency>

和spring mvc配置文件(例如:spring-mvc.xml)

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>
 类似资料:
  • 问题内容: 在控制器中,我创建json数组。如果我还可以的话: 但我需要返回JSON数组和HTTP状态代码: Eclipse在XXX行中看到错误: 如何返回json + http回复?我的工作代码用于返回一个json对象+ http状态代码: 问题答案: 现在我回来了。我不知道更好的解决方案,但是可以。

  • 问题内容: 我在SpringMVC项目中将新的Java API(JSR 353)用于JSON。 这个想法是生成一些Json数据并将其返回给客户端。我所拥有的控制器看起来像这样: 当我访问它时,我没有得到JSON的预期表示,而是得到了这些: 为什么是这样?到底是怎么回事?以及如何使其正确返回预期的JSON? 问题答案: 当您意识到新的JSR 353 API 没有特殊要求时,答案很简单。相反,在这种情

  • 我尝试使用以下步骤在Ubuntu上安装maven: 用户$wgethttp://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz 用户$tar-zxvf apache-maven-3.3。9-bin。焦油广州 用户$export PATH=/usr/local/apache-mave

  • null 但在执行时 用户$mvn-版本 cli返回:程序'mvn'可以在以下包中找到: null 用户$echo$JAVA_HOME /usr/lib/jvm/java-8-Oracle

  • @ResponseBody无法返回forma json,我在浏览器上获得了Etat HTTP 406 我正在使用:jackson-core-asl 1.9.3和ajckson-mapper-asl 1.9.3 Getjson: Spring: 我的servelet-context: 我通过这个url进入浏览器: http://othman-pc.com:8080/dsi/natureparoper

  • 返回当前运行的whisper版本。 调用: web3.shh.getVersion([callback]) 参数: callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值: String - 当前运行中的whisper版本 示例代码: web3.shh.getVersion() .then(console.log); > "5.0"