如何使用jstl获取/设置复选框值并仅删除选中复选框的数据库中的那些记录?你还可以建议如何在jstl中使用三元运算符来实现这种情况吗? SearchStudent.jsp %@ taglib prefix="c" uri="http://java.
SearchStudent.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Lookup Students</title> </head> <form method="post" action="deleteStudentServlet" class="form"> <body class="body"> <!-- List results --> <c:if test="${not empty studentList}"> <table border="1" cellspacing="0" cellpadding="0" :> <tr> <th></th> <th>ID</th> <th>Title</th> <th>First Name</th> <th>Last Name</th> <th></th> </tr> <c:forEach var="students" items="${studentList}"> <tr> <td><input type="checkbox" name="chkBox"> </td> <td>${students.studentID}</td> <td>${students.title}</td> <td>${students.firstName}</td> <td>${students.lastName}</td> <td><c:url value="UDS" var="url"> <c:param name="StudentID" value="${students.studentID}" /> </c:url> <a href="${url}">Edit</a></td> </tr> </c:forEach> </table> </c:if> <td><input type="submit" name="submit" value="Delete" ></td> </form> <p>There are ${fn:length(studentList)} results.</p> </body> </html>
谢谢.
您的复选框当前没有与参数名称关联的值:<input type="checkbox" name="chkBox">
因此很难找到已检查的那些.您需要为复选框指定唯一标识所选项目的值.在您的特定示例中,学生ID似乎是一个明显的选择:
<input type="checkbox" name="selected" value="${student.studentID}">
(顺便说一下,为什么要在属性名称中复制实体名称?为什么不将它命名为id,这样你就可以自我纪录使用${student.id}?你的var =“students”也有点奇怪,它只是指一个学生,所以只需将其命名为var =“student”; ${studentList}最好命名为${students})
提交表单后,所有选中的值都可用如下:
String[] selectedStudentIds = request.getParameterValues("selected");
最后,只需将其传递给执行业务工作的DAO / service类:
studentService.delete(selectedStudentIds);
也可以看看:
> How to transfer data from JSP to servlet when submitting HTML form
> ServletRequest.getParameterMap() returns Map<String, String[]> and ServletRequest.getParameter() returns String?
> Send an Array with an HTTP Get