2013-06-24 16 views

Odpowiedz

24

Wystarczy construct nowy ArrayList owijania zestaw kluczy z request parameter map.

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

Zastanawiam się tylko, jak to jest mieć numer List<String>. A Set<String> miałoby więcej sensu, ponieważ nazwy parametrów mają być unikatowe (a List mogą zawierać zduplikowane elementy). A Set<String> jest również dokładnie tym, co reprezentuje zestaw kluczy na mapie.

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

A może nie trzeba go w ogóle dla danego wymogu funkcjonalnego dla którego thought że masuje nazwy parametrów w List<String> byłoby rozwiązaniem. Być może masz faktycznie z zamiarem iteracji nad nim w rozszerzonej pętli, na przykład? Jest to również całkowicie możliwe na Map.

for (Entry<String, String[]> entry : request.getParameterMap().entrySet()) { 
    String name = entry.getKey(); 
    String value = entry.getValue()[0]; 
    // ... 
} 
+0

dziękuję los. Twoje rozwiązanie sprawdziło się jednak, ponieważ jestem stosunkowo nowy w Javie, nie byłem pewien, jaki jest typ 'Entry', a dla mnie, który pracował dla mnie był' java.util.Map.Entry'. Jednak musiałem zmienić deklarację jako 'Entry entry: request.getParameterMap(). EntrySet()', a wartość będzie tablicą z jednym elementem 'writer.println (" Wartość Param: " + wartość [0] .toString()); '. Doceniam twoją opinię. – tarekahf

8

Możliwe jest pobranieParameterNames z servletów za pomocą metody HttpServletRequest.getParameterNames(). Zwraca to enumeration. Możemy oddać elementy enemeracji do string i dodać je do ArrayList parametrów w następujący sposób.

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.. 
0

Można użyć Guava do konwersji Enumeration do Iterator, a następnie Iterator Do List:

Lists.<String> newArrayList(Iterators.forEnumeration(request.getParameterNames())) 
0

prawdopodobnie można używać w ten sposób:

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

Powiązane problemy