在html表格中,我在每一行中构建一个编辑按钮,如下所示:
retour.append("<input type=\"hidden\" id=\"id_"+nomTab+"_"+compteur+"\" value=\""+object.getIdDailyTimeSheet()+"\" name=\"hd_"+compteur+"\" />");
这是隐藏类型然后我执行以下操作:
retour.append("<button id=edit name=edit type=button onClick= editarow()>");
retour.append("<img src=edit.gif />");
retour.append("</button>");
retour.append("</td>");
这里我使用隐藏类型来区分我的行。 现在我试图在我的servlet中获取这里调用的参数:value = \“”+ object.getIdDailyTimeSheet(),以根据IdDailyTimeSheet执行更新查询。 直到我知道每次点击编辑按钮(我用javascript进行提交)时才知道获取此值的方法。
感谢您的帮助。
答案 0 :(得分:2)
您可以在每行中使用id
HTTP方法发送GET
参数:
<a href="[URL]?id=[id]"><img src="edit.gif"/></a>
其中:
URL
是您提交的网址
这个表格和id
是用“id_”+ nomTab +“_”+ compteur 答案 1 :(得分:1)
您可以使用getParameter()方法从doGet()/ doPost()方法中的HttpServletRequest请求变量中获取id。示例:request.getParameter(“edit”)。 “edit”是输入字段的名称。
您的HTML代码无效。你应该引用你的属性。您也可以考虑在JSP中执行html输出,而不是在servlet中附加字符串。
像布鲁诺说的那样。创建href链接宽度为id请求参数而不是隐藏输入字段的表单可能更容易。答案 2 :(得分:1)
你不必要地过度复杂化了。首先,不应该由Servlet发出HTML,而应该将其作为模板嵌入到JSP中。其次,为了达到你想要的效果,每个按钮必须位于自己的<form>
元素中。这是一个启动示例:
加载表数据的Servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException) {
List<Item> items = itemDAO.list();
request.setAttribute("items", items);
request.getRequestDispatcher("list.jsp").forward(request, response);
}
list.jsp
显示表格数据:
<table>
<c:forEach items="${items}" var="item">
<tr>
<td>${item.someProperty}</td>
<td>
<form action="servletUrl" method="post">
<input type="hidden" name="id" value="${item.id}">
<input type="submit" name="edit" value="edit">
</form>
</td>
</tr>
</c:forEach>
</table>
处理编辑的Servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException) {
Long id = Long.valueOf(request.getParameter("id"));
Item item = itemDAO.find(id);
request.setAttribute("item", item);
request.getRequestDispatcher("edit.jsp").forward(request, response);
}
无需Javascript黑客传递行ID。