1

我创建了一个 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"for edit 和name="1"for delete until 10

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

4

4 回答 4

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<% %>十年以来一直被认为是老派和糟糕的做法。另请参阅如何避免 JSP 文件中的 Java 代码?

于 2013-01-05T14:32:20.703 回答
0

您可以采取几种方法来解决这个问题。

查看所有提交的字段

  • 获取所有提交的字段(根据这个问题
  • 循环它们
  • 模式匹配它们的名称,直到找到与提交按钮的命名约定匹配的名称

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

  • 生成您可能拥有的所有提交按钮名称的列表
  • 遍历该列表,尝试获取每个名称的参数,直到找到一个

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

于 2013-01-05T14:34:10.600 回答
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");
于 2013-01-05T09:47:13.450 回答
-1
you can get button using 

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

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

于 2013-01-05T09:34:01.593 回答