【发布时间】:2014-03-27 23:57:08
【问题描述】:
找不到类型为 java.util.ArrayList 的媒体类型为 application/xml 的响应对象的 MessageBodyWriter
我在尝试以 xml 格式返回动态创建的类/dtos 列表的响应时遇到上述错误。
@GET
@Path("objects")
public Response getObjects(
@DefaultValue("json") @QueryParam("format") String format)
{
GenericEntity entity;
//I use cglib here to dynamically at runtime create a class called objectDto.
//The class is just a POJO.
List<Object> objectsDto = generateObjects(fields);
entity = new GenericEntity<List<Object>>(objectsDto){};
Response.ResponseBuilder rBuild;
if (format.equals("xml"))
{
rBuild = Response.ok(entity, MediaType.APPLICATION_XML);
}
else
{
rBuild = Response.ok(entity, MediaType.APPLICATION_JSON);
}
return rBuild.build();
}
奇怪的是我可以返回这个对象的 JSON 表示,但不能返回 XML。我也可以返回非动态创建的类的 XML 表示。
我在我的 Maven 项目中对 resteasy-jaxb-provider 有正确的依赖:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>3.0.6.Final</version>
</dependency>
【问题讨论】:
-
当你用 cglib 生成你的类时,你是否也会为它们生成 JAXB 注释?
-
我认为你已经遇到了问题...我需要用 @XmlRootElement 注释我的类...现在要弄清楚如何向类添加注释:) :) 感谢您的帮助兄弟!
标签: java xml maven resteasy cglib