Java 如何在Jersey中映射分号分隔的PathParams?

Java 如何在Jersey中映射分号分隔的PathParams?,java,rest,jersey,jax-rs,Java,Rest,Jersey,Jax Rs,是否有使用此参数样式的方法: /产品/123 ;;456;789 用JAX-RS和Jersey?如果使用PathParam,则只返回列表中的第一个参数。我试图转义分号,但Jersey只返回“123;456;789”作为第一个参数列表项的值 我将GET方法声明为 public List<Product> getClichedMessage(@PathParam("ids") List<String> idList) public List getClichedMessag

是否有使用此参数样式的方法:

/产品/123 ;;456;789

用JAX-RS和Jersey?如果使用PathParam,则只返回列表中的第一个参数。我试图转义分号,但Jersey只返回“123;456;789”作为第一个参数列表项的值

我将GET方法声明为

public List<Product> getClichedMessage(@PathParam("ids") List<String> idList)
public List getClichedMessage(@PathParam(“ids”)List idList)
更新:我指的是泽西1.1.5版:

通常,方法的Java类型 参数可以是(…)4)列表, 设置或分类数据集,其中T 满足2或3以上要求。结果 集合是只读的。(...) 有时,参数可能包含更多信息 相同名称的多个值。如果 这就是5月的情况 用于获取所有值

更新:这是我的测试代码:

package de.betabeans.resources;

import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

@Path("/test")
public class TestResource {

    @GET
    @Path("/{ids}")
    @Produces({"text/plain"})
    public String getClichedMessage(@PathParam("ids") List<String> idList) {
        return "size=" + idList.size();
    }

}
package de.betabeans.resources;
导入java.util.List;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
@路径(“/test”)
公共类测试资源{
@得到
@路径(“/{ids}”)
@产生({“文本/普通”})
公共字符串getClichedMessage(@PathParam(“ids”)列表idList){
返回“size=“+idList.size()”;
}
}
转义了分号的测试URL:

更新:包括以下信息:

固定问题540
参数化类型 支持列表/设置/分类设置 例如,参数 @查询参数(“d”)列表>, 如果有StringReaderProvider 已注册的支持该类型的 名单


我将根据这篇文章查看StringReaderProvider,当您使用分号时,您将创建。 您可以使用
@MatrixParam
路径段
获取它们。例如:

 public String get(@PathParam("param") PathSegment pathSegment)
请注意,矩阵参数是跟随原始参数的参数。 所以在“123;456;789”的情况下,-123是路径参数,而456和789是矩阵参数的名称

因此,如果您想通过ID获取产品,可以执行以下操作:

public List<Product> getClichedMessage(@PathParam("ids") PathSegment pathSegment) {
    Set<String> ids = pathSegment.getMatrixParameters().keySet();
    // continue coding
}

谢谢你的建议!请看我的更新,在文档中,PathParam似乎也支持多个值。您可以编写类似@Path(“/url/{param}/和/{param}”)的代码因此@PathParam将被复制,并可以作为列表接收。但我认为这不是您想要的。是的,这是可行的,但URL中的参数数量必须与模式中的数量完全匹配。我的解决方法是使用字符串而不是列表,并在代码(String.split(ids))中进行解析。很明显,您的解决方法会起作用。您可以获取整个路径段并自己解析它。这样,您可以使用任何东西作为分隔符,它也会起作用。请注意,它不是非常RESTful,因为您使用预定义约定的方式与您应该使用的方式略有不同。好的,我将查看/products?id=123&id=456&id=789样式(不知道参数可能出现多次)。实际上,在Stackoverflow API中使用了分号分隔的参数(请参阅)关于第二次更新:抱歉,但这样做不会成功。您继续使用矩阵参数,而您认为分号是路径参数的分隔符。它不是。它也不会成为一个。它是矩阵参数的分隔符,用于创建URL,如/moremaps.com/map/color;lat=50;long=20;scale=32000
public List<Product> getClichedMessage(@QueryParam("id") List<String> ids)