使用Jersey和JAXB声明性超链接

时间:2012-08-03 16:21:22

标签: jaxb jersey jax-rs

我正在尝试使用Jersey声明式超链接和JAXB来实现对我来说相当简单的事情,但尽管阅读了所有文档和示例,但我发现我无法使用它。

我有一个书店,里面各有一本书。 我希望GET / bookstore只返回一系列书籍的超链接, 而GET / bookstore / some-title将返回实际的序列化书籍属性。

我对资源和“表示”完全混淆,并且@Ref应该有效。设计这个最干净的方法是什么?

锦上添花的是能够根据查询参数获取书店集合的任何一个版本(浅层只有书籍URI或深度与实际书籍属性)...

我试图将此方法添加到书店:

@XmlElement
public BookRef[] getBookReferences()
{
    BookRef[] refs = new BookRef[_books.size()];
    for (int i = 0; i < refs.length; i++) {
        refs[i] = new BookRef(_books.get(i).getTitle());
    }
    return refs;
}

使用此BookRef类:

@XmlRootElement(name="book")
public class BookRef
{
    private String _title;

    public BookRef()
    {
    }

    public BookRef(@PathParam("title") String title)
    {
        _title= title;
    }

    @Ref(resource=Book.class,
         style = Ref.Style.ABSOLUTE,
         bindings=@Binding(title="title", value="${instance.title}")
    )
    private URI _self;

    @XmlElement
    public URI getURI()
    {
        return _self;
    }
}

...但只是收益率(以JSON格式):{“bookReferences”:null}

0 个答案:

没有答案