Хорошо, в вашем коде есть куча ошибок.Я начну с jsp ...
Вы пытаетесь передать параметры через URL-адрес сервлета с POST
запросом
document.form.method = "POST";
document.form.action = "deletePatient?delPage="+ delpatient+"&pid="+pid;
Вы не можете передавать данные в URL с помощью postЗапросы.Вам нужно изменить свой сервлет на GET
, если вы хотите это сделать.
Также в этой строке:
<div class="ui small button" onClick="deletePatient(<c:out value="${user.patientId}"></c:out>)">
вы передаете значение в свой метод deletePatient.Но ваш метод deletePatient не имеет возможности передать значение:
function deletePatient(){ // no value being passed here?
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();
}
Вы также можете просто сделать:
${user.patientId}
вместо:
<c:out value="${user.patientId}"></c:out>
Другая проблема с вашим кодом заключается в том, что в вашем HTML не может быть нескольких элементов с одинаковым идентификатором.Это недопустимый HTML, и именно поэтому вы каждый раз получаете один и тот же идентификатор:
<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);
Если у вас возникли проблемы или вопросы, дайте мне знать,