3

假设一个类:

public class MyResource {

    @Path("/thing")
    public String getThing() {
        // returns HTML
    }

    @Path("/thing")
    @Produces(MediaType.APPLICATION_JSON)
    public String getThingJSON() {
        // returns JSON
    }
}

我怎样才能有一个标题为Accept: */*be 处理的请求getThing()?目前拥有通配符接受标头会导致getThingJSON()被调用。如果我有一个接受标头Accept: text/htmlthengetThing()被调用。

4

2 回答 2

2

我遇到了同样的问题,我必须使用带有特定@Produces()注释的方法。这个技巧有效:

@Path("/thing")
public String getThing() {}

@Path("/thing")
@Produces({MediaType.APPLICATION_JSON, "*/*;q=0"})
public String getThingJSON() {}

使用 MIME 类型时,可以添加 q 属性,表示优先级(0 到 1)。没有 q 属性意味着 1,但显然 q=0 欺骗 Jersey 使用另一个函数。

这是一种 hack,所以我不知道它是否会继续工作,但帮助了我。

于 2017-11-22T13:47:19.890 回答
-1

尝试添加a @Produces({MediaType.WILDCARD})

获取事物()

于 2012-12-13T16:05:34.893 回答