Quelqu'un peut-il m'expliquer pourquoi ServletRequest.getParameterMap()
renvoie un type
Map<String, String[]>
ServletRequest.getParameter()
renvoie simplement le type String
Je ne comprends pas pourquoi la carte correspondrait à plus d'une valeur. TIA.
Il retourne toutes les valeurs de paramètres pour les contrôles avec le nom même.
Par exemple:
<input type="checkbox" name="cars" value="audi" /> Audi
<input type="checkbox" name="cars" value="ford" /> Ford
<input type="checkbox" name="cars" value="opel" /> Opel
ou
<select name="cars" multiple>
<option value="audi">Audi</option>
<option value="ford">Ford</option>
<option value="opel">Opel</option>
</select>
Toutes les valeurs vérifiées/sélectionnées seront les suivantes:
String[] cars = request.getParameterValues("cars");
Il est également utile pour plusieurs sélections dans les tableaux:
<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 combinaison avec
itemDAO.delete(request.getParameterValues("delete"));
http://foo.com/bar?biff=banana&biff=pear&biff=grape
"biff" correspond maintenant à {"banana","pear","grape"}
La vraie fonction pour obtenir toutes les valeurs des paramètres est
request.getParameterValues();
getParameter()
n'est qu'un raccourci pour obtenir le premier.
Dans le cas des contrôles à valeurs multiples (case à cocher, sélection multiple, etc.), la fonction request.getParameterValues(..)
est utilisée pour récupérer les valeurs.
Si vous avez un contrôle à valeurs multiples comme une liste à sélection multiple ou un ensemble de boutons mappés au même nom, plusieurs sélections seront mappées sur un tableau.