誰かがServletRequest.getParameterMap()
が型を返す理由を説明できますか
_Map<String, String[]>
_
ServletRequest.getParameter()
は型String
を返すだけです
マップが複数の値にマップされる理由がわかりません。 TIA。
同じという名前のコントロールのすべてのパラメーター値を返します。
例えば:
<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"));
http://foo.com/bar?biff=banana&biff=pear&biff=grape
「biff」は{"banana","pear","grape"}
にマップされるようになりました
すべてのパラメーター値を取得する実際の関数は
_ request.getParameterValues();
_
getParameter()
は、最初のものを取得するための単なるショートカットです。
複数値コントロール(チェックボックス、複数選択など)の場合、request.getParameterValues(..)
を使用して値をフェッチします。
複数選択可能なリストまたは同じ名前にマップされたボタンのセットのような複数値コントロールがある場合、複数の選択は配列にマップされます。