我有一个与此问题类似的问题:Wicket: can Checkgroup be Ajax enabled?
我正在使用ListView,其中每个项目都有一个复选框。我也有一个“全选”复选框。我正在使用CheckGroup
,CheckGroupSelector
和Check
,并且一切正常。现在,有一个新的要求,即在更新复选框后,要更改页面上某些其他控件的状态。
Nicktar在上述链接问题中的建议也是我想到的第一个,但是我还无法找出如何将AjaxCheckBox
与CheckGroup
/ CheckGroupSelector
一起使用。根据文档,您必须使用Check
。
但是在this mail from 2008中,Igor Vaynberg也指出可以在AjaxCheckBox
中使用CheckGroup
。
我尝试了一下,只是用Check
替换了我使用AjaxCheckBox
的位置,但是它不起作用,CheckGroupSelector
不再找到该复选框。
我还研究了在onSelectionChanged
中使用CheckGroup
方法的方法,但是据我所知,我想避免使用它,因为它触发了服务器的另一次往返。
有人可以给我提示吗?还是对此有另一个不错的解决方案?
顺便说一句,我正在使用Wicket 1.4。
最佳答案
为什么不能在AjaxFormChoiceComponentUpdatingBehavior
中添加CheckGroup
?
从AjaxFormComponentUpdatingBehavior
的JavaDoc:
注意:此行为不适用于“选择”或“组”,为此请使用AjaxFormChoiceComponentUpdatingBehavior。AjaxFormChoiceComponentUpdatingBehavior
是与CheckGroup
和RadioGroup
一起使用的行为。如果将AjaxFormComponentUpdatingBehavior
与onchange
事件一起使用,则会在IE中遇到this bug
。 AjaxFormChoiceComponentUpdatingBehavior
可以正确处理此问题,对onclick
中的每个Check
进行adding CheckGroup
event handlers处理。
附带一提,Igor在邮件中说的是,可以用CheckBox
代替AjaxCheckBox
代替Check
。如the sources所示,AjaxCheckBox
只是带有CheckBox
的AjaxFormComponentUpdatingBehavior("onclick")
的便利子类。