URLの途中のマトリックスパラメーター
http://localhost:8080/res/categories;name=foo/objects;name=green
パス変数とを使用して、どこでも行列パラメーターにアクセスできます@PathParam
PathSegment
。
@GET
@Path("{categoryVar:categories}/objects")
public String objectsByCategory(@PathParam("categoryVar") PathSegment categorySegment,
@MatrixParam("name") String objectName) {
MultivaluedMap<String, String> matrixParameters = categorySegment.getMatrixParameters();
String categorySegmentPath = categorySegment.getPath();
String string = String.format("object %s, path:%s, matrixParams:%s%n", objectName,
categorySegmentPath, matrixParameters);
return string;
}
応答
object green, path:categories, matrixParams:[name=foo]
マトリックスパラメータはとして提供されるため、MultivaluedMap
それぞれにアクセスできます。
List<String> names = matrixParameters.get("name");
または、最初のものだけが必要な場合
String name = matrixParameters.getFirst("name");
すべての行列パラメーターを1つのメソッドパラメーターとして取得する
http://localhost:8080/res/categories;name=foo/objects;name=green//attributes;name=size
List<PathSegment>
それらをすべて取得するにはa を使用します
@GET
@Path("all/{var:.+}")
public String allSegments(@PathParam("var") List<PathSegment> pathSegments) {
StringBuilder sb = new StringBuilder();
for (PathSegment pathSegment : pathSegments) {
sb.append("path: ");
sb.append(pathSegment.getPath());
sb.append(", matrix parameters ");
sb.append(pathSegment.getMatrixParameters());
sb.append("<br/>");
}
return sb.toString();
}
応答
path: categories, matrix parameters [name=foo]
path: objects, matrix parameters [name=green]
path: attributes, matrix parameters [name=size]