有什么方法可以通过编程方式从javax.rs.ws.core.UriInfo
获取矩阵参数吗?我知道您只需执行MultivaluedMap
就可以将查询参数作为uriInfo.getQueryParameters()
获得。不支持矩阵参数吗?还是可以通过调用uriInfo.getPathParameters()
获得它们?
最佳答案
/../
之间的路径的每个部分都是PathSegment
。并且由于每个段都允许使用矩阵参数,因此能够通过PathSegment
访问它们是有意义的。输入PathSegment#getMatrixParameters()
:-)。所以..
List<PathSegment> pathSegments = uriInfo.getPathSegments();
for (PathSegment segment: pathSegments) {
MultivaluedMap<String, String> map = segment.getMatrixParameters();
...
}
也可以注入
PathSegment
@Path("/{segment}")
public Response doSomething(@PathParam("segment") PathSegment segment) {}
对于路径模板正则表达式允许多个段匹配的情况,您也可以插入
List<PathSegment>
。例如@Path("{segment: .*}/hello/world")
public Response doSomething(@PathParam("segment") List<PathSegment> segments) {}
如果URI是
/stack/overflow/hello/world
,则段stack
和overflow
将被放入列表中。另外,除了注入
PathSegment
之外,我们还可以简单地使用@MatrixParam
注入矩阵参数的值@Path("/hello")
public Response doSomething(@MatrixParam("world") String world) {}
// .../hello;world=Hola!