尝试重新迭代列表以更新值,从 .jsp 到 servlet

Trying to re-iterate over a list to update values, from .jsp to servlet

我正在做一个模拟汽车经销商的小型培训项目,管理员有一种 "admin panel" 可以从中管理汽车列表。

当我尝试根据复选框更新汽车状态(是否可用)时出现问题,这些复选框根据数据库中的值进行填充。所以我想从 .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 复选框中的值重新迭代更新值?

不完全清楚你在问什么,但是,假设这个调用 returns something:

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>

您的请求随后将包含许多参数,如下所示:

  • isAvailable_1
  • isAvailable_2等

这将允许您将值绑定到特定的汽车,在您的 Servlet 中执行类似以下操作:

for(Car car : cars){
    car.setAvailable(Boolean.parseBoolean(request.getParameter("isAvailable_" + car.getId()));
}