2013-06-24 28 views

Trả lời

24

Chỉ construct mới ArrayList gói các keyset của request parameter map.

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

Tôi chỉ tự hỏi làm thế nào nó có ích khi có nó như List<String>. Một Set<String> sẽ có ý nghĩa hơn nhiều vì tên thông số được coi là unique (một List có thể chứa các phần tử trùng lặp). A Set<String> cũng chính xác là những gì mà keyset của bản đồ đã đại diện.

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

Hoặc có lẽ bạn không cần nó ở tất cả cho các yêu cầu chức năng cụ thể mà bạn thought rằng xoa bóp tên tham số vào một List<String> sẽ là giải pháp. Có lẽ bạn thực sự là có ý định lặp lại nó trong một vòng lặp nâng cao, chẳng hạn? Điều đó cũng hoàn toàn có thể trên Map.

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

Cảm ơn nhiều. Giải pháp của bạn làm việc cho tôi, tuy nhiên, vì tôi tương đối mới với Java, tôi không chắc chắn loại 'Entry' là gì và cái nào làm việc cho tôi là' java.util.Map.Entry'. Tuy nhiên, tôi đã phải thay đổi khai báo là 'Entry entry: request.getParameterMap(). EntrySet()' và giá trị sẽ là một mảng với một phần tử 'writer.println (" Giá trị Param: " + giá trị [0] .toString()); '. Tôi đánh giá cao phản hồi của bạn. – tarekahf

8

Có thể nhận được thông số từ các servlets bằng cách sử dụng phương thức HttpServletRequest.getParameterNames(). Điều này trả về một enumeration. Chúng ta có thể cast các phần tử enemeration vào string và thêm chúng vào một tham số ArrayList như sau.

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

Bạn có thể sử dụng Guava để chuyển đổi Enumeration một Iterator, và sau đó là Iterator đến một List:

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

Bạn có thể có thể sử dụng này:

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

Các vấn đề liên quan