目前的Jeresy doc(https://jersey.java.net/documentation/latest/jaxrs-resources.html)显示了这个例子。
@Path("{id:\\d+}")
public class InjectedResource {
// Injection onto field
@DefaultValue("q") @QueryParam("p")
private String p;
// Injection onto constructor parameter
public InjectedResource(@PathParam("id") int id) { ... }
// Injection onto resource method parameter
@GET
public String get(@Context UriInfo ui) { ... }
// Injection onto sub-resource resource method parameter
@Path("sub-id")
@GET
public String get(@PathParam("sub-id") String id) { ... }
// Injection onto sub-resource locator method parameter
@Path("sub-id")
public SubResource getSubResource(@PathParam("sub-id") String id) { ... }
// Injection using bean setter method
@HeaderParam("X-header")
public void setHeader(String header) { ... }
}
我不明白这种特殊注射是如何起作用的:
// Injection onto sub-resource resource method parameter
@Path("sub-id")
@GET
public String get(@PathParam("sub-id") String id) { ... }
sub-id的值来自哪里?我已经实现了这段代码并尝试了以下内容:
这导致id param为null
curl localhost:9090/JerseySample/1234/sub-id
这导致404
curl localhost:9090/JerseySample/1234/sub-id/1234
这是一个拼写错误,看起来像这样吗?
// Injection onto sub-resource resource method parameter
@Path("{sub-id}")
@GET
public String get(@PathParam("sub-id") String id) { ... }