Java 多重删除操作不起作用
我试图通过选中多个复选框来删除数据,但是当我从屏幕上选择复选框并点击删除按钮时,只有最上面的一行被删除。意味着无论我选择哪一行,它都会删除表中唯一的第一个条目。请帮帮我 Delete.servletJava 多重删除操作不起作用,java,jsp,servlets,Java,Jsp,Servlets,我试图通过选中多个复选框来删除数据,但是当我从屏幕上选择复选框并点击删除按钮时,只有最上面的一行被删除。意味着无论我选择哪一行,它都会删除表中唯一的第一个条目。请帮帮我 Delete.servlet delPage = request.getParameter("delPage"); patientId = request.getParameter("pid"); if(delPage.equals("true")) { int p = Integer.pars
delPage = request.getParameter("delPage");
patientId = request.getParameter("pid");
if(delPage.equals("true")) {
int p = Integer.parseInt(patientId);
patientDao = new PatientDAO();
boolean b = patientDao.isPatientDeleted(p);
if (b) {
System.out.println("Patient Deleted Successfully .... !");
RequestDispatcher rd = request.getRequestDispatcher("/Pages/MasterPage.jsp");
rd.forward(request, response);
}else
System.out.println("Patient deleting failed ... ! ");
}
RequestDispatcher rd = request.getRequestDispatcher("/Pages/MasterPage.jsp");
rd.forward(request, response);
}
Masterpage.jsp
<script type="text/javascript">
function addNewPatient(){
debugger;
var addNewPat = "true";
document.form.method = "POST";
document.form.action = "addPatient?newPage="+addNewPat;
document.form.submit();
}
function deletePatient(){
debugger;
var pid = document.getElementById("del").value;
var delpatient = "true";
document.form.method = "POST";
document.form.action = "deletePatient?delPage="+ delpatient+"&pid="+pid;
document.form.submit();
}
</script>
<c:forEach var="user" items="${patients}">
<tr>
<td>
<input type="checkbox" id="del" value="<c:out value="${user.patientId}">
</c:out>" >
</td>
<td>
<input type="hidden" id="delpatient"><c:out value="${user.patientId}">
</c:out>
<td><c:out value="${user.patientName}" /></td>
<td><c:out value="${user.patientAddress}" /></td>
<td><c:out value="${user.patientPhone}" /></td>
</tr>
</c:forEach>
<div class="ui small button" onClick="deletePatient(<c:out value="${user.patientId}"></c:out>)">
<i class="trash ulternate icon"></i>
Delete
</div>
好吧,你的代码中有很多错误。我将从jsp开始 您正试图通过带有
POST
请求的servlet url传递参数
document.form.method = "POST";
document.form.action = "deletePatient?delPage="+ delpatient+"&pid="+pid;
您不能通过post请求传递url中的数据。如果要这样做,您需要将servlet更改为GET
此外,在这方面:
<div class="ui small button" onClick="deletePatient(<c:out value="${user.patientId}"></c:out>)">
你也可以这样做:
${user.patientId}
而不是:
<c:out value="${user.patientId}"></c:out>
如果你有任何问题,请告诉我
${user}
在c:forEach循环结束后保留在页面范围内,因此当您单击按钮时,最后一个患者将被删除。给每一行一个按钮,您的问题就解决了。给出此错误的ur代码<代码>HTTP状态500-对于输入字符串:“[object HtmlDevice]”为输入字符串键入异常报告消息:“[object HtmlDevice]”说明服务器遇到一个内部错误,使其无法满足此请求。异常java.lang.NumberFormatException:对于输入字符串:[object HtmlDevice],我还想使用复选框删除记录。您的代码为每个单独的记录创建一个按钮。该错误确切地涉及代码的哪个区域?是的,我去掉了你的复选框,但是你可以很容易地将按钮替换为有监听器在更改时提交的复选框。我已经更新了我的代码。它在第intpatientid=Integer.parseInt(request.getParameter(“pid”))行显示错误
在DeletePatientServlet.java文件中,由于未发送参数pid,您将获得一个空指针。并且不能在null上解析int。检查您的代码是否与我编写的代码完全匹配。确保${user.patientId}实际正在输出某些内容。检查表单头以查看是否正在发送该值
${user.patientId}
<c:out value="${user.patientId}"></c:out>
<c:forEach var="user" items="${patients}">
<tr>
<td>
<input type="checkbox" id="del" value="<c:out value="${user.patientId}"> //no this is bad.
</c:out>" >
</td>
<td>
<input type="hidden" id="delpatient"><c:out value="${user.patientId}">
</c:out>
<td><c:out value="${user.patientName}" /></td>
<td><c:out value="${user.patientAddress}" /></td>
<td><c:out value="${user.patientPhone}" /></td>
</tr>
</c:forEach>
<div class="ui small button" onClick="deletePatient(<c:out value="${user.patientId}"></c:out>)"> //this will pass the same id each time
<i class="trash ulternate icon"></i>
Delete
</div>
<script type="text/javascript">
function deletePatient(e){
var patientid = e.getAttribute("data-patientid");
deletePatientForm(patientid);
}
function deletePatientForm(pid) {
var form = document.createElement("form");
var input = document.createElement("input");
form.method = "POST";
form.action = "deletePatient";
input.value=pid;
input.name="pid";
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
</script>
<c:forEach var="user" items="${patients}">
<tr>
<th>id</th>
<th>name</th>
<th>address</th>
<th>phone</th>
<th></th>
<tr>
<tr>
<td>${user.patientId}</td>
<td>${user.patientName}</td>
<td>${user.patientAddress}</td>
<td>${user.patientPhone}</td>
<td>
<div class="ui small button" onClick="deletePatient(this)" data-patientid="${user.patientId}"><i class="trash ulternate icon"></i> Delete</div>
</td>
<tr>
</c:forEach>
int patientId = Integer.parseInt(request.getParameter("pid"));
PatientDAO patientDao = new PatientDAO();
patientDao.isPatientDeleted(patientId);
RequestDispatcher rd = request.getRequestDispatcher("/Pages/MasterPage.jsp");
rd.forward(request, response);