ServletRequest.getParameterMap()返回Map <String,String []>和ServletRequest.getParameter()返回String?

Bil*_*Man 51 java servlets

有人可以向我解释为什么ServletRequest.getParameterMap()返回类型

Map<String, String[]> 
Run Code Online (Sandbox Code Playgroud)

ServletRequest.getParameter() 只返回类型 String

我不明白为什么地图会映射到多个值.TIA.

Bal*_*usC 56

它返回具有相同名称的控件的所有参数值.

例如:

<input type="checkbox" name="cars" value="audi" /> Audi
<input type="checkbox" name="cars" value="ford" /> Ford
<input type="checkbox" name="cars" value="opel" /> Opel
Run Code Online (Sandbox Code Playgroud)

要么

<select name="cars" multiple>
    <option value="audi">Audi</option>
    <option value="ford">Ford</option>
    <option value="opel">Opel</option>
</select>
Run Code Online (Sandbox Code Playgroud)

任何选中/选定的值都将显示为:

String[] cars = request.getParameterValues("cars");
Run Code Online (Sandbox Code Playgroud)

它对表中的多个选择也很有用:

<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>
Run Code Online (Sandbox Code Playgroud)

与...结合

itemDAO.delete(request.getParameterValues("delete"));
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的反馈.它现在很有意义.有时很容易错过明显的东西.我想这就是这个网站如果为:). (5认同)

Jon*_*erg 21

http://foo.com/bar?biff=banana&biff=pear&biff=grape
Run Code Online (Sandbox Code Playgroud)

"biff"现在映射到 {"banana","pear","grape"}


ZZ *_*der 10

获取所有参数值的真正功能是

   request.getParameterValues();
Run Code Online (Sandbox Code Playgroud)

getParameter() 只是获得第一个的捷径.