没有发现响应类的消息正文作者ArrayList
虽然我正在尝试返回List,但它的throwing没有找到响应类ArrayList的消息正文作者。没有发现响应类的消息正文作者ArrayList
我的代码如下:
@POST
@Path("/{scope}/{application}/tables")
@Produces("application/xml")
public List<String> getTableNames(@PathParam("scope") String scope,
@PathParam("application") String application, Request request) {
// For example, I am returning a list of String
return new ArrayList<String>(4);
}
请帮助我。在此先感谢
要返回一个列表,最好将它包装到一个注释为@XmlRootElement
的容器中,并将该容器的列表作为字段赋予,注释为@XmlElement
。
像这样:使用GenericEntity
@XmlRootElement
public class Container {
@XmlElement
public List yourlist;
}
尝试。
Response.ok(new GenericEntity<List<String>>(yourCollectionOfStrings) {}).build();
为了避免包装,可以使用杰克逊。 关于如何做到这一点,你可以按照我的answer提出类似的问题。
如果您打算将响应作为JSON返回,则需要该配置。事实上,如果你看这个问题的答案(http://*.com/questions/24653329/jaxrs-client-cont-find-message-body-writer/25536584#25536584),你会发现这样简单的配置将工作。但他想要一个XML作为回应。 – saibharath 2014-10-15 15:54:53
我用JacksonJaxbJsonProvider解决了它。没有Java代码需要修改。 Spring context.xml
和Maven pom.xml
只有很少的变化,请参阅https://*.com/a/30777172/1245231
我已经将列表添加到域图层的项目范围的现有对象。
它对于项目来说更具有上下文性,并且还可以开箱即用:无需测试XmlRootElement,但为该对象的现有测试用例列表添加测试数据+逻辑。
并确保'Container'具有默认的无参数构造函数:) – vikingsteve 2013-11-05 15:09:50