struts的表单提交问题????

我从数据库中读取出一笔数据,将它放在一个arraylist 中然后在一个页面以表格的形式将这笔数据一列一列输出来.并且在每一列的后面都有一个提交.代码如下:while(it.hasnext()){smp = it.next();//从列表中获得一列的数据 out.print("<form action="mmain.do">") out.print("<td>"+smp.getShpki()+"</td><input type = ✀hidden✀ name = ✀lshpki✀ value = ✀"+smp.getShpki()+"✀> ");//获取其中一个字段的值out.print("<td>"+smp.getCurno()+"</td><input type = ✀hidden✀ name = ✀lcurno✀ value = ✀"+smp.getCurno()+"✀> ");out.print("<td>"+smp.getItdsc()+"</td><input type = ✀hidden✀ name = ✀litdsc✀ value = ✀"+smp.getItdsc()+"✀> ");out.print("<td>"+smp.getQtyd()+"</td><input type = ✀hidden✀ name = ✀lqtyd✀ value = ✀"+smp.getQtyd()+"✀> ");out.print("<td>"+smp.getInvno()+"</td><input type = ✀hidden✀ name = ✀linvno✀ value = ✀"+smp.getInvno()+"✀> ");out.print("<td>"+smp.getShplt()+"</td>");out.print("<td>"+smp.getShpma()+"</td>");out.print("<td><input type=✀submit✀ name=✀lreturn✀ value = ✀回单确认✀ ></td>");out.print("</tr>"); out.print("</form>");}我这段代码的意思是循环的将这笔数据,显示在页面上,且每生成一行就生成一个表单form,因为我每一列后面都要有一个提交,即有几列就要有几个提交,而一个表单form只能有一个提交,所以我将表单form放在循环内,就是想每生成一个列就生成一个表单. 1.但是有一个问题,就是当我提交每一行的时候,没有出现问题,而提交第二行的时候,action收到的还是第一行的数据,其它的也是.要怎么样才能解决这个问题??????? 2.要是有人有更好的设计达成我上面的这个效果可以说出来我会多给你加分的.!!!!!
2026年09月26日 00:55
有4个网友回答
网友(1):

我只能说没你这么做的
不是每行都有你那个提交的
你在第一行第一列 加入个checkbox
他的值是你的主键id
然后通过页面的JS控制
提交按钮只有一个 点提交 获取所选的ID 并且
传入你想去的路径 例如http://localhost:1180/CygnetSystem/user.do?action=userDetail
在你的JS写user.do?action=userDetail?id=页面checkbox所选的id
这样才对嘛 另外 我注意到你的List并没指明是哪个类型
貌似也没转换 你确定smp.getShpki()能获取出来东西?
还有那个id 用了checkbox后 应该是个数组 考虑到删除时
可以同时删除多个 注意下吧。

网友(2):

这样修改问题就会解决~~!

while(it.hasnext()){
smp = it.next();//从列表中获得一列的数据

out.print("

")
out.print(""+smp.getShpki()+" ");//获取其中一个字段的值

out.print(""+smp.getCurno()+" ");

out.print(""+smp.getItdsc()+" ");

out.print(""+smp.getQtyd()+" ");

out.print(""+smp.getInvno()+" ");

out.print(""+smp.getShplt()+"");
out.print(""+smp.getShpma()+"");

out.print("");
out.print("");
out.print("
");
}

网友(3):

我用jsp写过楼主类似的东西,当时写的个表,表的每行都是一个表单,都有提交按钮。我的做法是


然后取iterid的值判断是哪个表单提交。感觉很笨,但确实可行。
还是楼上两位说的方法比较好

网友(4):

界面可以稍作调整,万一需要一次确认两个怎么办? 三个呢?五个呢?
建议:把FORM放在循环外面,同时每行后面不要提交按钮,在每行后面设置一个复选框, 在整个表的后面放一个提交按钮。
这样提交到后台的数据就是一个对象数组(一个或者多个记录),
后台把用户选中的数据(checkbox.checked)进行处理即可。

另外,如果如果比较多,注意考虑分页问题。