分类: Java
2006-01-04 22:40:52
昨天,一个小问题困扰了我一个整天就是这个multibox
画面上有一排mulitbox,当用户选择了某个或者某些复选框,
然后再取消所有选择的复选框,也就是说当浏览器发送请求的时候
应该是在actionForm中获取到的mulitbox应该是一个空的数组
然而实际情况呢?
当然不是空数组,不然就没有必要发这个邮件了。
个人认为这个是struts的一个bug
在struts的官方网站查到了问题所在:
WARNING: In order to correctly recognize cases where none of the associated checkboxes are selected, the ActionForm
bean associated with this form must include a statement setting the corresponding array to zero length in the reset()
method.
可见不是我一个人遇到这种问题。
解决这个问题必须重写form的reset()方法。把相应的数组长度置0。
虽然这个方法可以解决什么都不选的情况。
但是当页面跳转以后在返回本页面就记录不住Httprequest之前的状态了
现在临时的解决办法是在跳转页面之前
重写的reset()方法不会执行,只有在页面跳转以后才会执行reset()方法。
所以在执行reset()方法之前保存mulitbox的状态
在下一次跳转回来的时候再把mulitbox的状态还原。
这是一个小问题,可是有时候小问题也很烦人。
陆亚伟认为这个不是一个好办法,可是本人只能想到这个破方法。
如果大家有什么别的想法,欢迎讨论。
共同进步。
PS:由于涉及到multibox的人不多,所以对大家可能没有用处。本人本着共同学习的出发点,交流。
也希望大家多发实用帖子。