Можно ли получить request.getParameterNames()
как список строк? Мне нужно иметь его в этой форме.
Как request.getParameterNames в список строк?
Ответ 1
Просто построить новый ArrayList
пакетный набор запросить карту параметров.
List<String> parameterNames = new ArrayList<String>(request.getParameterMap().keySet());
// ...
Мне просто интересно, как это полезно иметь в качестве List<String>
. A Set<String>
будет иметь больший смысл, поскольку имена параметров должны быть уникальными (a List
может содержать повторяющиеся элементы). A Set<String>
также является тем, что уже представляет собой набор ключей карты.
Set<String> parameterNames = request.getParameterMap().keySet();
// ...
Или, может быть, вам это совсем не нужно для конкретного функционального требования, для которого вы подумали, что массирование имен параметров в List<String>
будет решением, Возможно, вы на самом деле намерены перебирать его в расширенном цикле, например? Это также вполне возможно на Map
.
for (Entry<String, String[]> entry : request.getParameterMap().entrySet()) {
String name = entry.getKey();
String value = entry.getValue()[0];
// ...
}
Ответ 2
Можно получить параметрыParameterNames из сервлетов с помощью метода 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..
Ответ 3
Вы можете использовать Guava, чтобы преобразовать Enumeration
в Iterator
, а затем Iterator
в List
:
Lists.<String> newArrayList(Iterators.forEnumeration(request.getParameterNames()))
Ответ 4
Возможно, вы можете использовать это:
List<String> parameterNamesList = Collections.list(request.getParameterNames());