从正确的隐藏类型中获取值的方法

时间:2010-05-25 14:04:09

标签: java javascript html servlets

在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进行提交)时才知道获取此值的方法。

感谢您的帮助。

3 个答案:

答案 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。