首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAX-RS NoMessageBodyWriterFoundFailure

JAX-RS NoMessageBodyWriterFoundFailure
EN

Stack Overflow用户
提问于 2013-09-04 11:49:11
回答 2查看 2.1K关注 0票数 1

我的jax-rs应用程序的方法:

代码语言:javascript
运行
复制
@GET
@Produces (MediaType.APPLICATION_JSON)
public List <Document> getDocumentList(@HeaderParam("Range") String headerRange) {
int [] range = getRangeFromHeader(headerRange);
return facade.listByRange(range);
}

正常工作。但如对下列各项作出修改:

代码语言:javascript
运行
复制
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getDocumentList(@HeaderParam("Range") String headerRange) {
   int[] range = getRangeFromHeader(headerRange);
   return Response.ok(
          facade.listByRange(range))
         .header("Content-Range", getContentRangeStr(range)).build();
}

我收到一个错误

代码语言:javascript
运行
复制
...NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response
object of type: java.util.ArrayList of media type: application/json...

服务器Jboss 7.1.1

请告诉我怎么回事。

PS.sorry为我的糟糕英语。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-04 14:36:57

下面的片段应该能做到这一点。

代码语言:javascript
运行
复制
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getDocumentList(@HeaderParam("Range") String headerRange) {
   int[] range = getRangeFromHeader(headerRange);
   return Response.ok(
        new GenericEntity<List<Document>>( (List<Document>)facade.listByRange(range))
         )
         .header("Content-Range", getContentRangeStr(range)).build();
}

匿名GenericEntity子类需要为编写器提供正确的类型信息(否则由编译器擦除)。

-编辑

代码使用org.jboss.resteasy.resteasy-jackson-provider而不是org.jboss.resteasy.resteasy-jettison-provider工作的原因在于这两个提供程序之间的根本区别:

  • 前者(jackson)依赖于JavaBean模型,发现要序列化的对象的属性,并且不需要类型信息。
  • 后者(jettyson)依赖于JAXB注释,因此它需要由编译器删除的底层类型信息。
票数 1
EN

Stack Overflow用户

发布于 2015-04-28 17:48:10

您缺少了一个图书馆,如下所述:

这是解决办法

这意味着您在类路径中缺少了一个JSON库。杰克逊是我正在使用的一个,所以将其添加到您的pom.xml中会有帮助:

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.10.1</version>
</dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18613031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档