多个提交按钮具有不同的值

时间:2018-06-15 03:45:03

标签: java forms jsp button submit

我需要捕获提交按钮的值,但按下按钮只会向我发送第一个生成按钮的值。

这是我的代码

modificarVivienda.jsp:

        <table border="1">
            <thead>
                <tr>
                    <td>
                        Codigo vivienda
                    </td>
                    <td>
                        Direccion
                    </td>
                    <td>
                        Numero
                    </td>
                    <td>
                        Tipo vivienda
                    </td>
                    <td>
                        Condominio
                    </td>
                    <td>
                        Rut propietario
                    </td>
                </tr> 
            </thead> 
            <tbody>
            <c:forEach items="${lstviviendas}" var="v">

                <tr>
                    <td>
                        ${v.cod_vivienda}
                    </td>
                    <td>
                        ${v.direccion}
                    </td>
                    <td>
                        ${v.numero}
                    </td>            
                    <td>
                        ${v.tipo_vivienda}
                    </td>
                    <td>
                        ${v.nombre_condominio}
                    </td>
                    <td>
                        ${v.rut_propietario}
                    </td>
            <input type="text" value="${v.cod_vivienda}" name="cod_vivienda" hidden="true">
            <td>
                <input type="submit" value="Modificar" id="btnModificar">
            </td>
            </tr> 
        </c:forEach>
        </tbody>
    </table>

的Servlet

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    int cod_vivienda = Integer.parseInt(request.getParameter("cod_vivienda"));

    DAOVivienda dv = new DAOVivienda();
    HttpSession session = request.getSession();
    ArrayList<Vivienda> vivienda = dv.buscarPorId(cod_vivienda);
    session.setAttribute("viviendaAModificar", vivienda);
    response.sendRedirect("vivienda/modificar.jsp");
}

1 个答案:

答案 0 :(得分:0)

  

“我需要捕获提交按钮的价值

您的提交按钮都没有名称,因此没有提交按钮的值

我想你的意思是说你想要名为<input>的相关cod_vivienda的价值。

  

“按下按钮只会向我发送第一个生成按钮的值”

这是不正确的。提交了所有cod_vivienda值。您可能刚刚调用getParameter("cod_vivienda"),javadoc说:

  

如果将此方法与多值参数一起使用,则返回的值等于getParameterValues返回的数组中的第一个值

如您所见,要获得所有值,您必须致电getParameterValues("cod_vivienda")

要实际获取名为cod_vivienda的单个参数,其值与按下的按钮匹配,您应该使用<button>元素,该元素可以将值与按钮相关联,与显示的文本分开。

替换:

<input type="text" value="${v.cod_vivienda}" name="cod_vivienda" hidden="true">
<td>
  <input type="submit" value="Modificar" id="btnModificar">
</td>

使用:

<td>
  <button type="submit" name="cod_vivienda" value="${v.cod_vivienda}">Modificar</button>
</td>

现在,只有按下按钮的名称/值对才会提交给服务器。