0

我正在使用@InjectParam将查询参数注入到 JAX-RS 资源中,该资源包含 Jersey 1.12 实现上的 @QueryParam 注释字段。

在资源上:

@Path("query")
@GET
@Produces(MediaType.APPLICATION_XML)
public Query queryParam(@InjectParam Query query) {
    return query;
}

在接收注入参数的 pojo 中,我有一些 JAXB 和 JAX-RS 注释。

 @XmlRootElement
 public class Query {
    @QueryParam("value1")
    String value1;
 }

来自 REST 客户端的简单测试:

http://localhost:8888/sandbox/query?value1=hello3

产生正确的结果:

<query>
  <value1>hello3</value1>
</query>

这很好,但我也使用wadl-maven-plugin生成客户端,该客户端使用 WADL 文件生成客户端代码。如果 @QueryParam 注释包含在资源方法参数中,则WADL 文件不包含必要的请求参数。随后,我的客户被生产为不接受任何参数:

SandboxApi.sandbox().query().getAsQuery()

而不是接受填充生成的客户端 pojo。

Query queryClient = new Query();
queryClient.setValue1("hello3");
SandboxApi.sandbox().query().getAsQuery(queryClient);

任何人都知道我可以在 Jersey Resource 上放置一个魔术注释,该注释将生成一个带有正确信息的 WADL,以便 Wadl2Java 可以生成一个接受 POJO 并随后发送适当字段作为查询参数的客户端?

4

1 回答 1

0

一些在泽西岛工作的优秀人士提供的回复(通过私人谈话):

@Path("query")
@GET
@Produces(MediaType.APPLICATION_XML)
public Query queryParam(@QueryParam("value1") String value1, 
                        @InjectParam Query query) {
   return query; 
}

查询参数“value1”应该出现在生成的 WADL 中。

内置的 WADL 生成器不支持这些情况,我不确定它是否会很快得到支持。

于 2012-05-08T18:03:24.773 回答