web-dev-qa-db-ja.com

ServletRequest.getParameterMap()はMap <String、String []>を返し、ServletRequest.getParameter()はString?を返しますか?

誰かがServletRequest.getParameterMap()が型を返す理由を説明できますか

_Map<String, String[]> 
_

ServletRequest.getParameter()は型Stringを返すだけです

マップが複数の値にマップされる理由がわかりません。 TIA。

50
BillMan

同じという名前のコントロールのすべてのパラメーター値を返します。

例えば:

<input type="checkbox" name="cars" value="audi" /> Audi
<input type="checkbox" name="cars" value="ford" /> Ford
<input type="checkbox" name="cars" value="opel" /> Opel

または

<select name="cars" multiple>
    <option value="audi">Audi</option>
    <option value="ford">Ford</option>
    <option value="opel">Opel</option>
</select>

チェック/選択された値は次のようになります。

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

また、テーブル内の複数の選択にも役立ちます。

<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>

と組み合わせて

itemDAO.delete(request.getParameterValues("delete"));
56
BalusC
http://foo.com/bar?biff=banana&biff=pear&biff=grape

「biff」は{"banana","pear","grape"}にマップされるようになりました

21

すべてのパラメーター値を取得する実際の関数は

_   request.getParameterValues();
_

getParameter()は、最初のものを取得するための単なるショートカットです。

10
ZZ Coder

複数値コントロール(チェックボックス、複数選択など)の場合、request.getParameterValues(..)を使用して値をフェッチします。

3
Bozho

複数選択可能なリストまたは同じ名前にマップされたボタンのセットのような複数値コントロールがある場合、複数の選択は配列にマップされます。

2
Steve B.