代码之家  ›  专栏  ›  技术社区  ›  BillMan mulya

servletrequest.getParameterMap()返回map<string,string[]>和servletrequest.getParameter()返回string?

  •  48
  • BillMan mulya  · 技术社区  · 16 年前

    有人能给我解释一下为什么吗 ServletRequest.getParameterMap() 返回类型

    Map<String, String[]> 
    

    ServletRequest.getParameter() 只返回类型 String

    我不明白为什么地图会映射到一个以上的值。短暂性脑缺血发作

    5 回复  |  直到 14 年前
        1
  •  54
  •   BalusC    14 年前

    它返回控件的所有参数值, 相同的 姓名。

    例如:

    <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"));
    
        2
  •  21
  •   Jonathan Feinberg    16 年前
    http://foo.com/bar?biff=banana&biff=pear&biff=grape
    

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

        3
  •  10
  •   ZZ Coder    16 年前

    获取所有参数值的真正函数是

       request.getParameterValues();
    

    getParameter() 只是找到第一个的捷径。

        4
  •  3
  •   Bozho    16 年前

    如果使用多值控件(复选框、多选等),则 request.getParameterValues(..) 用于获取值。

        5
  •  2
  •   Steve B.    16 年前

    如果您有一个多值控件(如多个可选列表)或一组按钮映射到同一名称,则多个选择将映射到一个数组。