Package jakarta.ws.rs

Annotation Interface PathParam


@Target({PARAMETER,METHOD,FIELD}) @Retention(RUNTIME) @Documented public @interface PathParam
Binds the value of a URI template parameter or a path segment containing the template parameter to a resource method parameter, resource class field, or resource class bean property. The value is URL decoded unless this is disabled using the @Encoded annotation. A default value can be specified using the @DefaultValue annotation. The type of the annotated parameter, field or property must either:
  • Be PathSegment, the value will be the final segment of the matching part of the path. See UriInfo for a means of retrieving all request path segments.
  • Be List<jakarta.ws.rs.core.PathSegment>, the value will be a list of PathSegment corresponding to the path segment(s) that matched the named template parameter. See UriInfo for a means of retrieving all request path segments.
  • Be a primitive type.
  • Have a constructor that accepts a single String argument.
  • Have a static method named valueOf or fromString that accepts a single String argument (see, for example, Integer.valueOf(String)).
  • Have a registered implementation of ParamConverterProvider JAX-RS extension SPI that returns a ParamConverter instance capable of a "from string" conversion for the type.

The injected value corresponds to the latest use (in terms of scope) of the path parameter. E.g. if a class and a sub-resource method are both annotated with a @Path containing the same URI template parameter, use of @PathParam on a sub-resource method parameter will bind the value matching URI template parameter in the method's @Path annotation.

Because injection occurs at object creation time, use of this annotation on resource class fields and bean properties is only supported for the default per-request resource class lifecycle. Resource classes using other lifecycles should only use this annotation on resource method parameters.

Since:
1.0
See Also: