gpt4 book ai didi

java - apache cxf 中使用 queryParam 的方法选择

转载 作者:行者123 更新时间:2023-12-01 12:59:33 25 4
gpt4 key购买 nike

我创建了一个 java Rest 资源,其中有 2 个方法都在同一路径上监听,但其中一个方法带有 @QueryParam注解作为方法参数

@Path("test")
public class TestResource {

@GET
public Response filter(){
System.out.println("init");
return Response.accepted("Hello world").build();
}

@GET
public Response filterQuery(@QueryParam("filter") String filterQuery) {
return Response.accepted("filter: " + filterQuery).build();
//... parsing filter
}
}

但是当我尝试 GET../test?filter=name:Juraj;location:Slovakia../test它总是调用filter()方法

定义 QueryParam 来调用第二个方法还不够吗?我想让用户在相同的网址上进行参数化,而不是/test/filter?name=... 上进行参数化

我可以以某种方式做到这一点吗?使用apache-cxf 3.0.0-milestone2

最佳答案

定义@QueryParam并不意味着该参数是必需的。如果查询字符串为空或不包含定义的查询参数,则参数的值为 null

所以这两种方法都是不明确的,似乎第一种方法获胜。如果您想要两个方法,您可以轻松检查 null 并调用另一个方法。

@GET    
public Response filterQuery(@QueryParam("filter") String filterQuery) {
if (filterQuery == null) {
return filter();
}
return Response.accepted("filter: " + filterQuery).build();
}

private Response filter() {
return Response.accepted("Hello world").build();
}

关于java - apache cxf 中使用 queryParam 的方法选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com