我需要捕获提交按钮的值,但按下按钮只会向我发送第一个生成按钮的值。
这是我的代码
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");
}
答案 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>
现在,只有按下按钮的名称/值对才会提交给服务器。