我创建了一个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()
,因为我不知道用户会点击哪个按钮。
答案 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)
您可以采取几种方法。
鉴于您的姓名是数字,可能性的数量可能不是有限的。所以第一种方法可能更好。
答案 3 :(得分:-1)
you can get button using
String buttonName = request.getParameter("button-name")
然后你必须将值作为隐藏值传递给下一页;