check表单提交数据

来源:互联网 发布:路由器做淘宝客 编辑:程序博客网 时间:2024/06/05 16:22

向服务器端提交单个数据很简单,提交一组数据也不难:设成相同的name属性,服务器端收到数组形式然后处理即可。但是测试中发现checkbox设成相同的name属性之后,在struts2的Action里面无法得到正确的数据。具体表现是:只有选中的checkbox才有值,而且还是false。(PS:我使用struts2的自动类型转换,将checkbox的值转换为boolean数组)

试过设置value的值,但是没用。

于是就只有绕道而行了。网上有方法,说是在提交的时候,通过js来对checkbox遍历一下,组成一个字符串提交给服务器。这方法很简单,不提了。

在我查网上方法之前,我是这样做的:

首先添加一个js方法:

   1: <script type="text/javascript" >

 

   2:     function changeState(v) {

 

   3:         var t = v.parentNode.children[1];

 

   4:         if(t.value=="true") {

 

   5:             t.value="false";

 

   6:         } else {

 

   7:             t.value="true";

 

   8:         }

 

   9:     }

 

  10: </script>

 

 

 

注:关键是要找到hidden表单域,然后修改其值。试过nextSibling方法,但是不知道怎么回事,没用,所以暂且这样写,效果一样。

然后在每个checkbox之后添加一个hidden表单域,name属性设为服务器端需要接收的属性,再写checkbox的onclick事件调用上面的方法:

 

   1: <input type="checkbox" onclick="return changeState(this);"/>

 

   2: <input type="hidden" name="isHideInMenu" value="false"/>

 

 

 

 

这种方法的关键是通过js把checkbox的值与一个hidden表单域关联在了一起,优点是提交的数组同样是一个数组,无需特殊处理,服务器端处理简单了。

0 0
原创粉丝点击