2014-12-04 25 views
2

我嘗試使用Jersey製作一個restfull web服務。我想給該請求的響應鏈接:澤西島聲明式鏈接不起作用

GET /mac/ws/gtm HTTP/1.1 
Host: localhost:8080 
Accept: application/json 
Cache-Control: no-cache 

我想要的迴應是:

HTTP/1.1 200 OK 
link: </dossiers>;rel=dossiers 

{ 
    "message": "Hello" 
} 

但迴應是:

HTTP/1.1 200 OK 

{ 
    "message": "Hello" 
} 

的鏈接不生產!

看我的GTM資源:

@Component 
@Path("/gtm") 
public class GTmRessource 
{ 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public GTm getJson() 
    { 
     GTm gtm = new GTm(); 
     return gtm; 
    } 
} 

而且我GTM實體

@XmlRootElement() 
@Link(value = @Ref(value = "/dossiers", method = "get"), rel = "dossiers") 
public class GTm 
{ 
    String message = "Hello"; 

    public String getMessage() 
    { 
     return message; 
    } 

    public void setMessage(String message) 
    { 
     this.message = message; 
    } 
} 

有什麼不對?

感謝您的幫助。 通過

回答

1

Declarative Hyperlinking: Configuration

您需要添加LinkFilter通過編程方式:

resourceConfig.getContainerResponseFilters().add(LinkFilter.class); 

或通過web.xml中

<init-param> 
    <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> 
    <param-value>com.sun.jersey.server.linking.LinkFilter</param-value> 
</init-param> 

C:\>curl -i http://localhost:8080/gtm 

HTTP/1.1 200 OK 
Content-Type: application/json 
Link: </dossiers>;rel=dossiers 
Date: Thu, 04 Dec 2014 12:38:06 GMT 
Transfer-Encoding: chunked 

{"message":"Hello"} 
+0

是它的工作原理!你是超人! 非常感謝! – user4324018 2014-12-04 12:44:50