我有一个 JSP,我在其中显示数据库中的日期和描述。每个条目都有一个唯一的 id,但我没有在页面上显示(显示复选框)这些条目是使用“逻辑:迭代”抛出的,因此行数总是根据条目而变化。现在这些字段显示为文本字段,以便用户还可以更新日期或描述。左侧有一个复选框,因此用户可以选择他们想要更新的所有值。记住上面的逻辑:迭代,复选框必须使用名称定义,不能有 id。
...
...
<logic:notEmpty name="specialResult" scope="request">
<logic:iterate name="specialResult" id="specialResult" indexId="index">
<tr align="center">
<td width="15%">
<input type="checkbox" name="upisActive" property="upisActive"
value="<bean:write name="specialResult" property="upId"/>"></input></td>
<td width="15%"><input type="text" name="upDate" value="<bean:write name="specialResult" property="upDate"/>"
property="upDate" size="20" class="Date" id="Date"></input></td>
<td width="15%"><input type="text" name="upDesc" value="<bean:write name="specialResult" property="upDesc"/>"
property="upDesc" size="20" id="Desc"/></td>
</tr>
</logic:iterate>
...
我的错误是,如果我有三行并且我想更新第三行并选择第三个复选框。我的 Action 类正在检索第一行日期和 desc。如何编辑我的操作类以根据选中的复选框检索值?
public ActionForward class(ActionMapping mapping, ActionForm theForm,
HttpServletRequest request, HttpServletResponse response) throws IOException,
SQLException, ServletException
{
Connection conn = null;
Service Serv = new Service();
List updList = new ArrayList();
Form upForm = (Form) theForm;
String[] values = request.getParameterValues("upisActive");
try
{
conn = getConnection(request, false);
for (int i=0;i<values.length;i++){
VO hdvo = new VO(); //Vo class with getters and setters
val = values[i];
hdvo.setDate(upForm.upDate[i]);
hdvo.setDesc(upForm.upDesc[i]);
updList.add(hdvo);
}
hdServ.updTest(updList, conn);
...