小编sno*_*jcb的帖子

Jersey 2 InjectLink被忽略

我正在创建一个新的Jersey 2.21,Jackson 2.6.1 REST服务器(我尝试使用Jersey 2.19和Jackson 2.5.3)并希望使用@InjectLink为我的呼叫者提供HATEOAS链接(如'self').最基本的应用程序(取自Jersey doc和Jersey示例应用程序)不起作用,我无法弄清楚原因.

我首先从Jersey文档中获取基本的Widgets类,但返回的JSON或XML只是一个空结构.

XML:

<Widgets/>
Run Code Online (Sandbox Code Playgroud)

JSON:

{}
Run Code Online (Sandbox Code Playgroud)

Widgets.java

package org.glassfish.jersey.examples.linking;

import java.net.URI;
import java.util.List;

import javax.ws.rs.core.Link;
import javax.xml.bind.annotation.XmlRootElement;

import org.glassfish.jersey.linking.InjectLink;
import org.glassfish.jersey.linking.InjectLinks;

@XmlRootElement()
public class Widgets {
    @InjectLink(resource=WidgetsResource.class)
    URI u;

    @InjectLinks({@InjectLink(resource=WidgetsResource.class, rel = "self")})
    List<Link> links;

    public Widgets() {}
}
Run Code Online (Sandbox Code Playgroud)

我在资源代码中放了一个断点并检查了返回的对象.it.links和it.u都是null.什么也没注入.

WidgetsResource.java

@Path("widgets")
public class WidgetsResource {
    @GET
    public Widgets get() {
        Widgets it = new Widgets();
        return it;
    }
}
Run Code Online (Sandbox Code Playgroud)

Maven依赖:

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>${jersey.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-declarative-linking</artifactId>
        <version>${jersey.version}</version>
    </dependency> …
Run Code Online (Sandbox Code Playgroud)

json hateoas jackson maven jersey-2.0

6
推荐指数
1
解决办法
980
查看次数

标签 统计

hateoas ×1

jackson ×1

jersey-2.0 ×1

json ×1

maven ×1