我正在做一个模拟汽车经销商的小型培训项目,管理员有一个"管理面板"从那里他可以管理一系列汽车。
当我尝试根据复选框更新汽车状态(是否可用)时会出现问题,复选框会根据数据库中的值进行填充。所以我想从.jsp页面的复选框中检索这些值,以便在servlet中使用它们,并在任何复选框发生更改时在数据库中更新它们。
实现了.jsp部分,但问题在于servlet。
<c:forEach var="car" items="${carList}">
<tr>
<td>${car.brand}</td>
<td>${car.year}</td>
<td><input type="checkbox" name="isAvailable"
value="${car.available}"
${car.available == 'true' ? 'checked' : ''} /></td>
</tr>
</c:forEach>
我已经尝试过获取参数并进行投射,但我已经看到它不是正确的方式......而且我还创建了一个数组来自复选框的字符串值。
String[] arrayIsAvailable = request.getParameterValues("isAvailable");
如何在这个servlet中获取列表(它存储在请求中),以便重新迭代它,用.jsp复选框中的值更新值?
答案 0 :(得分:0)
但是,假设此调用返回了一些内容,那么您的要求并不完全清楚:
String[] arrayIsAvailable = request.getParameterValues("isAvailable");
你遇到的问题是,你只需要一个参数值列表,没有特定的顺序,也没有任何特定的汽车。
您需要以某种方式将复选框绑定到汽车。如果您按以下方式更新JSP:
<c:forEach var="car" items="${carList}">
<tr>
<td>${car.brand}</td>
<td>${car.year}</td>
<td><input type="checkbox" name="isAvailable_${car.id}]" value="${car.available}" ${car.available == 'true' ? 'checked' : ''} /></td>
</tr>
</c:forEach>
您的请求将包含许多参数,如下所示:
这将允许您将值绑定到特定的汽车,在Servlet中执行以下操作:
for(Car car : cars){
car.setAvailable(Boolean.parseBoolean(request.getParameter("isAvailable_" + car.getId()));
}