java - httpservletrequest - ServletRequest.getParameterMap() devuelve Map<String, String[]> y ServletRequest.getParameter() devuelve String?
httpservletrequest java que es (5)
Devuelve todos los valores de parámetros para los controles con el mismo nombre.
Por ejemplo:
<input type="checkbox" name="cars" value="audi" /> Audi
<input type="checkbox" name="cars" value="ford" /> Ford
<input type="checkbox" name="cars" value="opel" /> Opel
o
<select name="cars" multiple>
<option value="audi">Audi</option>
<option value="ford">Ford</option>
<option value="opel">Opel</option>
</select>
Cualquier valor marcado / seleccionado vendrá como:
String[] cars = request.getParameterValues("cars");
También es útil para múltiples selecciones en tablas:
<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>
en combinación con
itemDAO.delete(request.getParameterValues("delete"));
¿Puede alguien explicarme por qué ServletRequest.getParameterMap()
devuelve el tipo
Map<String, String[]>
ServletRequest.getParameter()
simplemente devuelve tipo String
No entiendo por qué el mapa se correlacionará con más de un valor. TIA.
En el caso de controles multivalor (casilla de verificación, selección múltiple, etc.), request.getParameterValues(..)
se utiliza para recuperar los valores.
La función real para obtener todos los valores de parámetro es
request.getParameterValues();
getParameter()
es solo un atajo para obtener el primero.
Si tiene un control multivalor como una lista de selección múltiple o un conjunto de botones asignados al mismo nombre, las selecciones múltiples se asignarán a una matriz.
http://foo.com/bar?biff=banana&biff=pear&biff=grape
"biff" ahora se asigna a {"banana","pear","grape"}