Java 在JAX-RS中使用子路径on方法

Java 在JAX-RS中使用子路径on方法,java,jax-rs,Java,Jax Rs,我正在尝试使用JAX-RS创建一个API,并通过多种方式获取产品。例如,如果您键入 herp.com/products/11 如果您得到ID为11的产品,则此功能非常有效。如果您键入: herp.com/products/name/banana 你应该得到所有叫做香蕉的产品。尽管“按名称获取”功能不起作用(in参数名称始终为null)。下面是包含所有注释的函数 @GET @Path("/name/{name}") @Produces({MediaType.APPLICATION_XML, Med

我正在尝试使用JAX-RS创建一个API,并通过多种方式获取产品。例如,如果您键入

herp.com/products/11

如果您得到ID为11的产品,则此功能非常有效。如果您键入:

herp.com/products/name/banana

你应该得到所有叫做香蕉的产品。尽管“按名称获取”功能不起作用(in参数名称始终为null)。下面是包含所有注释的函数

@GET
@Path("/name/{name}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getByName(@PathParam("{name}") String name) {

    Logger.getAnonymousLogger().log(Level.INFO, "getByName, name: " + name);
    List<ProductProxy> found = new ArrayList<ProductProxy>();
    for(ProductProxy proxy : products)
        if(name.equals(proxy.getName()))
            found.add(proxy);

    return Response.ok(found).build();
}
@GET
@路径(“/name/{name}”)
@产生({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
公共响应getByName(@PathParam(“{name}”)字符串名){
Logger.getAnonymousLogger().log(Level.INFO,“getByName,name:”+name);
找到的列表=新的ArrayList();
for(产品代理:产品)
if(name.equals(proxy.getName()))
已找到、添加(代理);
返回Response.ok(找到).build();
}

尽管参数中的参数始终为空。我是不是在注释上做错了什么??类anotation是@Path(“products”)。

从Path参数中删除大括号,即更改

@PathParam(“{name}”)字符串名

@PathParam(“name”)字符串名

@Path(“foo/{bar})
中的大括号只标识您有一个名为
bar
的路径参数,但它不是参数名称的一部分