我有一个 jsp,它向我显示基地的学生列表。对于每个学生,我想要 2 个按钮 - 编辑和删除。单击“编辑”后,请求应重定向到我的 servlet Controller ,并打开一个用于编辑所选学生数据的新 jsp。单击“删除”后,所选学生的删除请求将发送至 Controller 。现在看起来像这样:
<%@page import="socnet2.Student"%>
<!-- class Student emulates real student -->
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<jsp:useBean class="socnet2.DAO" id="dao" scope="request"></jsp:useBean>
<p><b>List of all students:</b></p>
<form action="/JSP1/Controler" method="POST">
<jsp:scriptlet>
for (Student s : dao.getAllStudents()) {
</jsp:scriptlet>
<p> <jsp:expression> s.getName() + " " + s.getSurname()</jsp:expression></p>
<input type="submit" name="Edit" value="Edit" />
<input type="submit" name="Delete" value ="Delete"/>
<jsp:scriptlet>
}
</jsp:scriptlet>
</form>
</body>
问题是我无法弄清楚如何将我的学生与按钮连接起来,以便当请求发送到 Controller 时知道单击了哪个按钮以及选择了哪个学生。我知道我需要为每个学生提供一些唯一的 ID,但不知道如何创建它......
最佳答案
我相信Student
已经拥有某种身份证明。举例来说,它有 private String id
和适当的 setter/getter public String getId()
。
在这种情况下,您应该在生成提交按钮的名称时使用此 ID:
<input type="submit" name="Edit_<%=s.getId()%>" value="Edit" />
<input type="submit" name="Delete_<%=s.getId()%>" value ="Delete"/>
现在您可以在服务器端区分学生。 或者,您可以为每个学生创建单独的表单,并为每个表单提供唯一的 URL:
<form method="post" url="http://myhost/myapp/students/<%s.getId()%>">
关于java - 在JSP中处理多个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938302/