51 votes

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

Quelqu'un peut-il m'expliquer pourquoi le type de retour ServletRequest.getParameterMap()

 Map<String, String[]>
 

ServletRequest.getParameter() ne fait que renvoyer le type String

Je ne comprends pas pourquoi la carte correspondrait à plus d'une valeur. TIA.

56voto

BalusC Points 498232

Elle renvoie toutes les valeurs de paramètre pour les contrôles avec le même nom.

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>

Tout contrôler et/ou de valeurs sélectionnées viendra en tant que:

String[] cars = request.getParameterValues("cars");

Il est également utile pour les sélections multiples 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"));

21voto

Jonathan Feinberg Points 24791
 http://foo.com/bar?biff=banana&biff=pear&biff=grape
 

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

10voto

ZZ Coder Points 36990

La vraie fonction pour obtenir toutes les valeurs de paramètre est

    request.getParameterValues();
 

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

3voto

Bozho Points 273663

Dans le cas de contrôles à valeurs multiples (case à cocher, sélection multiple, etc.), le request.getParameterValues(..) est utilisé pour récupérer les valeurs.

2voto

Steve B. Points 23227

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 à un tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X