首页 > 解决方案 > 按 /1;2;3;4;5 顺序读取参数列表

问题描述

example.com/1;2;3;4;5是否可以按照 URL 提供的顺序读取参数列表?

我目前不工作的方法是:

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似乎按字母顺序排序,而不是按输入顺序排序。只需将整个参数作为字符串读取并手动解析就可以了,但也找不到这样做的方法。

标签: javajerseyjax-rsdropwizard

解决方案


请仔细查看PathSegment 文档矩阵参数存储在MultivaluedMap。它唯一的实现是MultivaluedHashMap。它不保留元素的顺序。

我已经快速检查了如何在 JAX-RS 中获取原始请求参数。似乎没有纯粹的 JAX-RS 方式。您可以尝试使用此问题中的原始 HttpServletRequest 对象来获取信息。


推荐阅读