ServletRequest.getParameterMap()返回Map <String,String >和ServletRequest.getParameter()返回String?
有人可以向我解释为什么ServletRequest.getParameterMap()
返回types
Map<String, String[]>
ServletRequest.getParameter()
只是返回String
types
我不明白为什么地图会映射到更多的值。 TIA。
它将返回具有相同名称的控件的所有参数值。
例如:
<input type="checkbox" name="cars" value="audi" /> Audi <input type="checkbox" name="cars" value="ford" /> Ford <input type="checkbox" name="cars" value="opel" /> Opel
要么
<select name="cars" multiple> <option value="audi">Audi</option> <option value="ford">Ford</option> <option value="opel">Opel</option> </select>
任何检查/选定的值将会进入:
String[] cars = request.getParameterValues("cars");
这对表中的多项select也很有用:
<table> <tr> <th>Delete?</th> <th>Foo</th> </tr> <c:forEach items="${list}" var="item"> <tr> <td><input type="checkbox" name="delete" value="${item.id}"></td> <td>${item.foo}</td> </tr> </c:forEach> </table>
与…结合
itemDAO.delete(request.getParameterValues("delete"));
http://foo.com/bar?biff=banana&biff=pear&biff=grape
“biff”现在映射到{"banana","pear","grape"}
获取所有参数值的实际函数是
request.getParameterValues();
getParameter()
只是获取第一个的快捷方式。
在多值控件(checkbox,多选等)的情况下,使用request.getParameterValues(..)
来获取值。
如果您有一个多值select列表或一组button映射到相同的名称多select将映射到一个数组。