我使用@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客户端的简单测试:
产生正确的结果:
<query>
<value1>hello3</value1>
</query>
这很好,但我也使用wadl-maven-plugin生成一个使用WADL文件生成客户端代码的客户端。如果@QueryParam注释包含在资源方法参数中,则WADL文件不包含必需的request parameters。随后我的客户端被生成为不接受任何参数:
SandboxApi.sandbox().query().getAsQuery()
而不是接受填充的生成客户端pojo。
Query queryClient = new Query();
queryClient.setValue1("hello3");
SandboxApi.sandbox().query().getAsQuery(queryClient);
任何人都知道我可以在Jersey资源上添加一个魔术注释,它会产生一个具有正确信息的WADL,因此Wadl2Java可以生成一个接受POJO并随后将相应字段作为查询参数发送的客户端?
答案 0 :(得分:0)
在泽西岛工作的一些优秀人员(通过私人谈话)提供的回复:
@Path("query")
@GET
@Produces(MediaType.APPLICATION_XML)
public Query queryParam(@QueryParam("value1") String value1,
@InjectParam Query query) {
return query;
}
查询参数“value1”应出现在生成的WADL中。
内置的WADL生成器不包含对这些情况的支持,我不确定它是否会很快得到支持。