我使用嵌套在表行中的表单为每一行生成一个删除按钮,表单的操作是一个servlet调用,然后调用java类中的remove方法。
如何为每个按钮添加“id”值,以便将正确的car对象发送到要从我的数据库中删除的方法。
我的JSP:
<h4>Current Cars Listed</h4>
<input type="button" value="Add Car" onclick="window.location='AddCar.jsp'">
<%
List<Car> resultList = new ArrayList<Car>();
resultList=(List<Car>)request.getAttribute("ResultList");
%>
<table border="1">
<thead title="Current Cars"/>
<tr><th>Make:</th><th>Model:</th><th>Year:</th><th>Colour:</th><th>Information:</th></tr>
<% for(int i=0; i<resultList.size(); i++){%>
<tr><td><%=resultList.get(i).getCarMake()%></td><td><%=resultList.get(i).getModel()%></td><td><%=resultList.get(i).getCarYear()%></td>
<td><%=resultList.get(i).getCarColour()%></td><td><%=resultList.get(i).getInformation()%></td>
<td><form action="CarServlet" method="get" ><input type="submit" value="Remove" name="remove"></form></td></tr>
<% }%>
</table>
答案 0 :(得分:2)
您可以在表单中添加隐藏值以添加ID:
<td>
<form action="CarServlet" method="get">
<input type="hidden" name="carId" value="<%= resultList.get(i).getId() %>" />
<input type="submit" value="Remove" name="remove">
</form>
</td>
由于您已经在使用请求属性,因此最好使用stop using scriptlets at all并使用表达式语言+ JSTL。
<table>
<thead>
<!-- current thead -->
</thead>
<tbody>
<c:forEach items="${ResultList}" var="car">
<tr>
<td>${car.carMake}</td>
<td>${car.model}</td>
<td>${car.carYear}</td>
<td>${car.carColour}</td>
<td>${car.information}</td>
<td>
<form action="CarServlet" method="get">
<input type="hidden" name="carId" value="${car.id}" />
<input type="submit" value="Remove" name="remove">
</form>
</td>
</tr>
</c:forEach>
</tbody>
与使用scriptlet的原始代码相比,了解上述代码的可读性和可维护性如何更好。