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

使用Spring 3.1.2和Jackson 1.9.11的HttpMediaTypeNotAcceptableException

秦禄
2023-03-14

~R

我试图用Jackson实现Spring MVC REST JSON通道中的JSON自动转换。尽管我按照其他StackOverflow问题中建议的方法进行了所有操作,但我得到了HttpMediatypeNotAcceptableException,并且我的beans/list没有转换为JSON。我在Jetty上运行代码。

我遵循了Spring MVC中的UTF-8编码问题、Spring 3.0使用jackson message converter生成JSON响应以及Spring中忽略的jackson注释中的说明,但它们都不允许我发送bean或列表 。两者都返回HTTP状态406。只有返回字符串的方法在HTTP 200中成功。

@RequestMapping(value = "/list", produces = "text/plain; charset=utf-8")
public @ResponseBody List<String> getList() {
    return createList();
}
<context:component-scan base-package="de.myapp.rest" />
<context:annotation-config />
<mvc:annotation-driven />

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jacksonMessageConverter" />
        </list>
    </property>
</bean> 

添加此部分也没有帮助:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
  <property name="mediaTypes">
    <map>
      <entry key="json" value="application/json"/>
    </map>
   </property>
  <property name="defaultViews">
    <list>
      <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
    </list>
  </property>
</bean> 

请求HTTP头由jQuery生成,如下所示:

接受application/JSON、text/JavaScript、/;Q=0.01接受编码gzip,deflate接受语言de-de,de;Q=0.8,en-us;Q=0.5,en;Q=0.3用户代理Mozilla/5.0(Windows NT 6.1;WOW64;RV:18.0)Gecko/20100101 Firefox/18.0

但是,我得到带有HTML错误消息的HTTP406,日志文件中有以下几行:

处理程序[public de.myapp.rest.testbean de.myapp.rest.test.getlist()]:org.springframework.web.HttpMediatypeNotAcceptableException:找不到可接受的表示形式

所以问题是,我在这里错过了什么?为什么jackson转换器没有注册/我如何调试它?我通过jetty:run运行代码。但这并不重要,因为Spring是与应用程序和服务器无关的。

共有1个答案

万喜
2023-03-14

@requestmapping中,您有produces=“text/plain”,但是您的请求头说accept application/json,text/javascript。没有匹配的。

使用produces=“application/json”或者根本不使用produces。它的主要用例是为同一个URL提供多个方法,每个方法以不同的格式(JSP、JSON、XML...)产生输出。

 类似资料:
  • java.util.regex 是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern 和 Matcher。 Pattern 对象是正则表达式编译后在内存中的表示形式,因此,正则表达式字符串必须先被编译为 Pattern 对象,然后再利用该 Pattern 对象创建对应的 Matcher 对象。执行匹配所涉及的状态保留在 Matcher 对象中,多个 Match

  • 问题内容: 我需要生成加密强度高的随机数和字节数组。为此,我使用Java的类。但是我不确定根据加密强度选择哪种PRNG算法。 以下哪个实例产生了更不可预测的数字?还是相等? 此外,我们能够使用“ SUN”提供程序生成这些实例(例如)。这有什么不同吗? 提前致谢。 问题答案: TL; DR:不确定时使用,让系统找出来。可能用于长期密钥生成。 不要期望随机数生成器会在运行时应用程序中生成特定的输出序列

  • 问题内容: 我在让NEST的DeleteByQuery方法工作时遇到了一些困难。 很简单,查询永远找不到要删除的内容,我也不知道为什么。我正在使用相同的查询来返回记录(使用搜索),并且一切正常。 我只是刚刚开始使用NEST,所以我确定这是一个非常简单的问题,而且我有点昏暗! 任何帮助/建议,不胜感激。 问题答案: 的是上的.NET方法支票是否相等。 如果您更改对它的呼叫,则应该可以使用。

  • Serenity 平台使用了一些很有用的开源工具和库,列出如下(按字母顺序排列): 此列表可能看起来有点长,但一个 Serenity 的应用程序并没有依赖所有的库。 其中一些库只在 Serenity 平台自身的发展过程中才用到,而有一些是可选功能的依赖项。 我们尽量使用开源库,因为它们的优质可以避免重新造轮子。 Autonumeric (https://github.com/BobKnothe/a

  • 问题内容: 本教程演示了指令的使用,而不是: 他们要求: 用普通的旧src属性替换ng-src指令。 使用Firebug或Chrome的Web检查器之类的工具,或检查Web服务器的访问日志,确认该应用确实确实对 /app/%7B%7Bphone.imageUrl%7D%7D (或 / app / {{phone .imageUrl}} )。 我这样做了,它给了我正确的结果: 有什么原因吗? 问题答

  • 我不是XPATH方面的专家,我非常希望有一个解决方案,因为我正在用Windows应用程序自动化的Robot Framework做一些PoC工作。 多谢了。