2012-02-16 19 views
10

虽然我正在尝试返回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); 
} 

请帮助我。在此先感谢

回答

19

要返回一个列表,最好将它包装到一个注释为@XmlRootElement的容器中,并将该容器的列表作为字段赋予,注释为@XmlElement

像这样:使用GenericEntity

@XmlRootElement 
public class Container { 
    @XmlElement 
    public List yourlist; 
} 
+2

并确保'Container'具有默认的无参数构造函数:) – vikingsteve 2013-11-05 15:09:50

3

请参阅this,它的JAXB多数民众赞成在给你的问题,它不知道如何解组/编组列表。

-1

尝试。

Response.ok(new GenericEntity<List<String>>(yourCollectionOfStrings) {}).build(); 
0

为了避免包装,可以使用杰克逊。 关于如何做到这一点,你可以按照我的answer提出类似的问题。

+1

如果您打算将响应作为JSON返回,则需要该配置。事实上,如果你看这个问题的答案(http://stackoverflow.com/questions/24653329/jaxrs-client-cont-find-message-body-writer/25536584#25536584),你会发现这样简单的配置将工作。但他想要一个XML作为回应。 – saibharath 2014-10-15 15:54:53

0

我已经将列表添加到域图层的项目范围的现有对象。

它对于项目来说更具有上下文性,并且还可以开箱即用:无需测试XmlRootElement,但为该对象的现有测试用例列表添加测试数据+逻辑。

相关问题