【发布时间】:2025-12-08 07:30:01
【问题描述】:
谁能解释一下为什么ServletRequest.getParameterMap()返回类型
Map<String, String[]>
ServletRequest.getParameter() 只返回类型String
我不明白为什么地图会映射到一个以上的值。 TIA。
【问题讨论】:
谁能解释一下为什么ServletRequest.getParameterMap()返回类型
Map<String, String[]>
ServletRequest.getParameter() 只返回类型String
我不明白为什么地图会映射到一个以上的值。 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");
这对于表格中的多项选择也很有用:
<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() 只是获得第一个的捷径。
【讨论】:
在多值控件(复选框、多选等)的情况下,request.getParameterValues(..) 用于获取值。
【讨论】:
如果您有一个多值控件,例如多选列表或一组映射到同名的按钮,则多个选择将映射到一个数组。
【讨论】: