今天做项目遇到一个很纠结的事情,在checkBox里面检索条件勾上之后,以后的每次检索都默认给勾上了。
从网上找资料有人说可以实现ActionFrom的reset()方法将对应的属性值设为false,但reset方法是在form实例化以后被调用的,也就是说你初始化的值true将被重置为false,这和直接将属性值设为false没有任何区别,这样做的结果是你从菜单进入页面时checkbox是处于不被选中的状态。
他们之间存在着矛盾,问题的关键就是每次提交时,Struts并没有去重新设置所有checkbox的属性值,而是有选择地(初始化值为false)地进行重新设置。
其实,在checkbox后面添加一个和checkbox的属性同名并且value为“false”的隐藏输入框,强迫Struts去重新设置checkbox的属性值
为了能正常使用checkBox,我们一定得配合普通隐藏域标签,否则只要勾选一次checkBox,不管以后是否勾选其值都为true。如:
[quote]重要标志 <html:checkbox property="importantFlag"></html:checkbox >
<input type="hidden" name="importantFlag" value="false">[/quote]
从网上找资料有人说可以实现ActionFrom的reset()方法将对应的属性值设为false,但reset方法是在form实例化以后被调用的,也就是说你初始化的值true将被重置为false,这和直接将属性值设为false没有任何区别,这样做的结果是你从菜单进入页面时checkbox是处于不被选中的状态。
他们之间存在着矛盾,问题的关键就是每次提交时,Struts并没有去重新设置所有checkbox的属性值,而是有选择地(初始化值为false)地进行重新设置。
其实,在checkbox后面添加一个和checkbox的属性同名并且value为“false”的隐藏输入框,强迫Struts去重新设置checkbox的属性值
为了能正常使用checkBox,我们一定得配合普通隐藏域标签,否则只要勾选一次checkBox,不管以后是否勾选其值都为true。如:
[quote]重要标志 <html:checkbox property="importantFlag"></html:checkbox >
<input type="hidden" name="importantFlag" value="false">[/quote]