【问题标题】:@ResponseBody in return type ; 406 error for accept header@ResponseBody 返回类型;接受标头的 406 错误
【发布时间】:2012-06-17 09:00:20
【问题描述】:

我正在使用带有

的 Spring MVC
<mvc:annotation-driven/>

在我的配置文件中。

我的控制器方法是

public @ResponseBody ArrayList<AccountDetails> create(UploadItem uploadItem)   {  
..............
return list;
}

使用jre1.7

对于接受标头仍然收到 HTTP 状态 406 错误..

【问题讨论】:

标签: spring-mvc annotations http-status-code-406


【解决方案1】:

我认为为了让这个工作你必须明确声明消息转换器。

【讨论】:

    【解决方案2】:

    你的问题在细节上相当稀疏,但这是在黑暗中的一个镜头。

    请求中传递了哪些接受标头?

    您期望返回什么(XML?JSON?)以及您期望它如何发生。

    如果您在类路径上有 JAXB,并且客户端指定它接受 xml,那么 spring 将为您将其转换为 XML。

    如果您在类路径中有 Jackson,并且客户端指定它接受 JSON,那么 spring 将为您将其转换为 JSON。

    你满足这些条件吗?

    Spring MVC 3: Returning XML through @ResponseBody 可能会为您提供更多信息。

    【讨论】:

    • 我希望该方法返回 XML。 jre 1.7 有 JAXB 实现。所以@ResponseBody 应该生成 XML。我想我不需要明确声明消息转换器。
    【解决方案3】:

    当接受标头正确但 JAXB 配置缺少编组对象所在的包名称时,我们遇到了类似的 Spring 406 返回代码(该 jar 在该包中有一个 jaxb.in​​dex 文件,但 Spring/JAXB 不知道。

    这是 Spring 3.20

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 2014-04-11
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多