2013-06-24 11 views

回答

24

只是constructArrayList包裹request parameter map的鍵集。

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

我只想知道如何將它作爲List<String>有用。 A Set<String>會更有意義,因爲參數名稱應該是唯一(一個List可以包含重複的元素)。 A Set<String>也正是地圖的鍵集已經代表的。

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

或許你不需要它都爲你thought是按摩參數名稱爲List<String>將是解決辦法的具體功能要求。也許你實際上意圖在一個增強的循環迭代它,例如?這也完全可以在Map

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

謝謝許多。但是,您的解決方案適用於我,因爲我對Java相對來說比較陌生,所以我不確定'Entry'的類型是什麼類型,而對我而言的是'java.util.Map.Entry'。但是,我不得不將該聲明更改爲Entry entry:request.getParameterMap()。entrySet(),該值將是一個數組,其中包含一個元素'writer.println(「Param Value:」 + value [0] .toString());'。感謝您的反饋。 – tarekahf

8

通過使用HttpServletRequest.getParameterNames()方法可以從Servlet獲取參數名稱。這返回一個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.. 
0

你可以使用GuavaEnumeration轉換爲Iterator,然後IteratorList

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

你或許可以用這樣的:

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