如何获取我可以在页面源上查看的提交按钮的名称字段的值?

时间:2013-01-05 09:30:08

标签: java javascript html jsp servlets

我创建了一个HTML表单,其中包含"edit""delete"的多个按钮。我将它们放在for循环中,以便在另一页上查看其中的许多内容。

如何在下一个JSP页面上获取提交按钮的名称字段,或者我点击的任何按钮?或者,你可以为我提供一个替代方案吗?

<% for (int t = 1; t < 10; t++) { %>
    <label>
        <input type="submit" name="<%=t %>" value="edit" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
        <input type="submit" name="<%=t %>" value="delete" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
    </label>
<% } %>

当我查看网页来源时,它会显示name="1"进行修改,name="1"进行删除直到10

我想在服务器端获取name字段的值。我也无法申请request.getParameter(),因为我不知道用户会点击哪个按钮。

4 个答案:

答案 0 :(得分:0)

使用隐藏标记,该标记存储所单击按钮的值

<input type="hidden" name="hidBt" />

将此隐藏标记放在值之外。

<label>
    <input type="submit" name="<%=t %>" value="edit" onclick="this.form.hidBt.value=this.value;this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
    <input type="submit" name="<%=t %>" value="delete" onclick="this.form.hidBt.value=this.value;this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
</label>    

之后调用隐藏变量

String butValue = request.getParameter("hidBt");

答案 1 :(得分:0)

由于您已经在onclick中更改了表单操作URL(这是一种非常糟糕的做法,但除此之外),为什么不只是添加行标识符呢?

<input type="submit" name="<%=t %>" value="edit" onclick="this.form.action='df1.jsp?flag=1&act=1&edit=<%=t%>';this.form.submit();" />
<input type="submit" name="<%=t %>" value="delete" onclick="this.form.action='df1.jsp?flag=1&act=1&delete=<%=t%>';this.form.submit();" />

这样你就可以:

String edit = request.getParameter("edit");

if (edit != null) {
    // Edit button of row "edit" was invoked. Do your job here.
}

String delete = request.getParameter("delete");

if (delete != null) {
    // Delete button of row "delete" was invoked. Do your job here.
}

否则,您需要在按钮名称前加上一些固定标识符:

<input type="submit" name="edit_<%=t %>" value="edit" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
<input type="submit" name="delete_<%=t %>" value="delete" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />

这样你就可以做到:

for (int t = 1; t < 10; t++) {
    if (request.getParameter("edit_" + t) != null) {
        // Edit button on index "t" was invoked. Do your job here.
        break;
    }

    if (request.getParameter("delete_" + t) != null) {
        // Delete button on index "t" was invoked. Do your job here.
        break;
    }
}

无关具体问题,用 scriptlet <% %>以这种方式编写JSP是因为十年被认为是oldschool并且是一种糟糕的做法。另请参阅How to avoid Java code in JSP files?

答案 2 :(得分:0)

您可以采取几种方法。

查看所有提交的字段

  • 获取已提交的所有字段(根据this question
  • 循环过来
  • 模式匹配其名称,直到找到与您提交按钮的命名约定相匹配的名称

查找所有可能的提交按钮名称

  • 生成您可以拥有的所有提交按钮名称的列表
  • 在该列表上循环,尝试获取每个名称的参数,直到找到一个

鉴于您的姓名是数字,可能性的数量可能不是有限的。所以第一种方法可能更好。

答案 3 :(得分:-1)

you can get button using 

String buttonName =  request.getParameter("button-name") 

然后你必须将值作为隐藏值传递给下一页;