web-dev-qa-db-fra.com

ServletRequest.getParameterMap () renvoie Map <String, String []> et ServletRequest.getParameter () renvoie String?

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.

50
BillMan

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"));
56
BalusC
http://foo.com/bar?biff=banana&biff=pear&biff=grape

"biff" correspond maintenant à {"banana","pear","grape"}

21
Jonathan Feinberg

La vraie fonction pour obtenir toutes les valeurs des paramètres est

   request.getParameterValues();

getParameter() n'est qu'un raccourci pour obtenir le premier.

10
ZZ Coder

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.

3
Bozho

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.

2
Steve B.