当我使用下面的代码时,我得到了异常。它看起来像jar问题,为了符合它,我取消注释了注释代码并且它工作正常。
消息类使用@XmlRootElement注释,因此也不应该是一个问题。
获取异常 - org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:找不到媒体类型= application / json的MessageBodyWriter,type = class java.util.ArrayList,genericType = class java.util.ArrayList。
Credentials
}
@Path("/messages")
@Singleton
public class MessageResource {
MessageService service = new MessageService();
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMessages(@BeanParam MessageBean bean) {
List<Message> messages;
if (bean.getYear() > 0)
messages = service.getMessagesForYearById(bean.getYear());
messages = service.getMessages();
return Response.ok().entity(messages).build();
}
// @GET
// @Produces(MediaType.APPLICATION_JSON)
// public List<Message> getMessages(@BeanParam MessageBean bean) {
//
// List<Message> messages;
//
// if (bean.getYear() > 0)
// messages = service.getMessagesForYearById(bean.getYear());
// messages = service.getMessages();
//
//
// return messages;
// }
答案 0 :(得分:1)
List<Message> messages
Response.ok().entity(messages)
由于运行时类型擦除,这会导致Collection承载类型丢失。使用GenericEntity包装集合以保留其类型信息:
GenericEntity generic = new GenericEntity<List<Message>>(messages){};
return Response.ok().entity(generic).build();