Can someone explain to me why ServletRequest.getParameterMap()
returns type
Map<String, String[]>
ServletRequest.getParameter()
just returns type String
I'm don't understand why the map would ever map to more then one value. TIA.
Can someone explain to me why ServletRequest.getParameterMap()
returns type
Map<String, String[]>
ServletRequest.getParameter()
just returns type String
I'm don't understand why the map would ever map to more then one value. TIA.
It returns all parameter values for controls with the same name.
For example:
<input type="checkbox" name="cars" value="audi" /> Audi
<input type="checkbox" name="cars" value="ford" /> Ford
<input type="checkbox" name="cars" value="opel" /> Opel
or
<select name="cars" multiple>
<option value="audi">Audi</option>
<option value="ford">Ford</option>
<option value="opel">Opel</option>
</select>
Any checked/selected values will come in as:
String[] cars = request.getParameterValues("cars");
It's also useful for multiple selections in tables:
<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>
in combination with
itemDAO.delete(request.getParameterValues("delete"));
http://foo.com/bar?biff=banana&biff=pear&biff=grape
"biff" now maps to {"banana","pear","grape"}
The real function to get all parameter values is
request.getParameterValues();
getParameter()
is just a shortcut to get first one.
In the case with multi-value controls (checkbox, multi-select, etc), the request.getParameterValues(..)
is used to fetch the values.
If you have a multi-value control like a multi-selectable list or a set of buttons mapped to the same name multiple selections will map to an array.
© 2022 - 2024 — McMap. All rights reserved.