大家好,我现在有一个表格,每一行都有几个表单用于处理用户的输入,形如下所示
<tr>
  <td>><input type="text" name="age"><input type="text" name="name"><input type="checkbox" name="do"></td>
  <td>><input type="text" name="age"><input type="text" name="name"><input type="checkbox" name="do"></td>
  <td>><input type="text" name="age"><input type="text" name="name"><input type="checkbox" name="do"></td>
  <td>><input type="text" name="age"><input type="text" name="name"><input type="checkbox" name="do"></td>  <td>><input type="text" name="age"><input type="text" name="name"><input type="checkbox" name="do"></td>  <td>><input type="text" name="age"><input type="text" name="name"><input type="checkbox" name="do"></td>
  <td>><input type="text" name="age"><input type="text" name="name"><input type="checkbox" name="do"></td>
.....
</td>该表格的行数根据用户的信息输入不同而不同,现在我需要根据checkbox是否选中来处理该行表单(如果没有选中,则不理会该行的其它text表单),现在我的问题是:我在一个Action中定义如下
private String[] age;
private String[] name;
private String[] do;用来接收所有的表单信息,但问题出现了,如果checkbox没有勾选的话,它是不会计入到表格的长度的(也就是说:如果表格行数为10,而checkbox被勾选的有4项,这样Action中的age,name的长度就为10[age与name为空的话,也不会计入到数据中],但do的长度却为4,也就是null不会计入到数组中),这样的话,我就不能说根据checkbox的索引来相应处理该行的其它表单信息,因为这样的话,我只能处理到索引4,而且这些索引也不是对应的行的..不知道大家有没有遇到过这样的问题,多谢了!

解决方案 »

  1.   

    do属性是主键的话,就只用do,获取到以后去数据库里查一次,name跟age然后再做处理。不要从前台拿值直接用。说不定你拿到的值已经跟数据库不同步了。
      

  2.   

      没选中也就是value的值为空,何不给个默认值了,没选中的传递到action中的值为默认,不为空,这样就可以被放入数组里了,这种方法需要借助javascript给checkbox加事件。当选中时动态修改value的默认值。
      

  3.   


    貌似checkbox不可以赋值吧??!只有on或空,,如果是text表单倒好办,多谢!
      

  4.   


    就算加入了value值,如果没有选中的话,那值是什么?如果选中的话,值又是什么??
      

  5.   

    没有数据库的话,你可以用脚本获取你选的是第几行。这个你要不会教你个比较简单的办法
    。checkbox里的value属性迭代的时候初始化成01234567.do属性别放checkbox里,新开个属性,放在checkbox里,do属性不想显示可以用hidden。
    这样到后台出来的是
    rivate String[] age;
    private String[] name;
    private String[] do;
    三个数组都是10个,然后你新开的数组里的值如果是123,就说明用户选的是第2,3,4条记录
      

  6.   


    我试过在checkbox中加入value属性,但是checkbox没有勾选时,传过去的还是空,因此问题的根本没有解决,,,
      

  7.   

    你没听明白我什么意思啊,没选上的是空,选上的不是有值嘛,我让你把这个值设置成是第几行的值。比如你获取到9个空但有一个有值,是5,那就说明前台选的是第5行,你只要从age数组里直接取第5个就行了
      

  8.   


    check 的value属性就可以赋值呀,你在action中获得的值就是check得value值。不信你可以试试。