【问题标题】:the way to get a value from a hidden type correctly正确从隐藏类型中获取值的方法
【发布时间】:2011-02-23 17:22:54
【问题描述】:

在一个 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 提交)。

感谢您的帮助。

【问题讨论】:

标签: java javascript html servlets


【解决方案1】:

您可以在每一行中使用GET HTTP 方法发送id 参数:

<a href="[URL]?id=[id]"><img src="edit.gif"/></a>

地点:

  • URL 是您提交的 URL 这个表格和
  • id 是你用 "id_" + nomTab + "_" + compteur 构建的

【讨论】:

    【解决方案2】:

    您可以使用 getParameter() 方法从 doGet()/doPost() 方法中的 HttpServletRequest 请求变量中获取 id。示例:request.getParameter("edit")。 “edit”是输入字段的名称。

    您的 html 代码无效。你应该引用你的属性。您也可以考虑在 JSP 中进行 html 输出,而不是在 servlet 中附加字符串。

    就像布鲁诺所说的那样。创建 href 链接宽度和 id 请求参数而不是带有隐藏输入字段的表单可能更容易。

    【讨论】:

      【解决方案3】:

      你不必要地把事情复杂化了。首先,HTML 不应该由 Servlet 发出,而应该作为模板嵌入到 JSP 中。其次,要实现您想要的,每个按钮都必须位于其自己的&lt;form&gt; 元素中。这是一个启动示例:

      加载表格数据的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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-13
        • 2019-10-31
        • 2014-04-10
        • 2020-01-22
        • 2013-12-08
        相关资源
        最近更新 更多