按顺序读取参数列表 /1;2;3;4;5
Read a list of parameters in order /1;2;3;4;5
是否可以按照 URL 提供的相同顺序读取像 example.com/1;2;3;4;5
这样的参数列表?
我目前无效的方法是:
public Response(@PathParam("list") PathSegment list) {
Set<String> listParams = list.getMatrixParameters().keySet();
List<String> listList = new ArrayList<>(list.size() + 1);
listList.add(list.getPath());
for (String param : list) {
listList.add(param);
}
}
它确实适用于 1;2;3;4;5
,但不适用于 1;5;4;3;2
。在这两种情况下,输出都是 1;2;3;4;5
。 matrixParameters
似乎是按字母顺序排序的,而不是按输入顺序排序的。将整个参数作为字符串读取并手动解析就可以了,但也找不到这样做的方法。
请仔细看PathSegment documentation。
矩阵参数存储在MultivaluedMap. Its only implementation is MultivaluedHashMap中。它不保留元素的顺序。
我快速检查了如何在 JAX-RS 中获取原始请求参数。似乎没有纯粹的 JAX-RS 方式。您可以尝试使用 this question 中的原始 HttpServletRequest 对象来获取信息。
是否可以按照 URL 提供的相同顺序读取像 example.com/1;2;3;4;5
这样的参数列表?
我目前无效的方法是:
public Response(@PathParam("list") PathSegment list) {
Set<String> listParams = list.getMatrixParameters().keySet();
List<String> listList = new ArrayList<>(list.size() + 1);
listList.add(list.getPath());
for (String param : list) {
listList.add(param);
}
}
它确实适用于 1;2;3;4;5
,但不适用于 1;5;4;3;2
。在这两种情况下,输出都是 1;2;3;4;5
。 matrixParameters
似乎是按字母顺序排序的,而不是按输入顺序排序的。将整个参数作为字符串读取并手动解析就可以了,但也找不到这样做的方法。
请仔细看PathSegment documentation。 矩阵参数存储在MultivaluedMap. Its only implementation is MultivaluedHashMap中。它不保留元素的顺序。
我快速检查了如何在 JAX-RS 中获取原始请求参数。似乎没有纯粹的 JAX-RS 方式。您可以尝试使用 this question 中的原始 HttpServletRequest 对象来获取信息。