15

是否可以request.getParameterNames()作为字符串列表获取?我需要以这种形式拥有它。

4

4 回答 4

28

只需构造一个新ArrayList的包装请求参数映射的键集。

List<String> parameterNames = new ArrayList<String>(request.getParameterMap().keySet());
// ...

我只是想知道将它作为List<String>. ASet<String>会更有意义,因为参数名称应该是唯一的(aList可以包含重复的元素)。ASet<String>也正是地图的键集已经表示的内容。

Set<String> parameterNames = request.getParameterMap().keySet();
// ...

或者,对于您认为将参数名称按摩到 a中的特定功能要求,您可能根本不需要它List<String>。例如,也许您实际上打算在增强的循环中对其进行迭代?这在Map.

for (Entry<String, String[]> entry : request.getParameterMap().entrySet()) {
    String name = entry.getKey();
    String value = entry.getValue()[0];
    // ...
}
于 2013-06-24T18:02:20.640 回答
8

可以通过使用方法从 servlet 中获取参数名称HttpServletRequest.getParameterNames()。这将返回一个enumeration. 我们可以将枚举元素转换为参数string并将其添加到ArrayList参数中,如下所示。

 ArrayList<String> parameterNames = new ArrayList<String>();
 Enumeration enumeration = request.getParameterNames();
    while (enumeration.hasMoreElements()) {
        String parameterName = (String) enumeration.nextElement();
        parameterNames.add(parameterName);
    }

 // you can do whatever you want to do with parameter lists..
于 2013-06-24T17:55:11.123 回答
7

您可能可以使用这个:

List<String> parameterNamesList = Collections.list(request.getParameterNames());

于 2017-04-24T18:32:33.673 回答
0

您可以使用Guava将 the 转换Enumeration为 a Iterator,然后将 the 转换Iterator为 a List

Lists.<String> newArrayList(Iterators.forEnumeration(request.getParameterNames()))
于 2013-06-24T18:16:06.540 回答