我有一个与此问题类似的问题:Wicket: can Checkgroup be Ajax enabled?

我正在使用ListView,其中每个项目都有一个复选框。我也有一个“全选”复选框。我正在使用CheckGroupCheckGroupSelectorCheck,并且一切正常。现在,有一个新的要求,即在更新复选框后,要更改页面上某些其他控件的状态。

Nicktar在上述链接问题中的建议也是我想到的第一个,但是我还无法找出如何将AjaxCheckBoxCheckGroup / CheckGroupSelector一起使用。根据文档,您必须使用Check

但是在this mail from 2008中,Igor Vaynberg也指出可以在AjaxCheckBox中使用CheckGroup

我尝试了一下,只是用Check替换了我使用AjaxCheckBox的位置,但是它不起作用,CheckGroupSelector不再找到该复选框。

我还研究了在onSelectionChanged中使用CheckGroup方法的方法,但是据我所知,我想避免使用它,因为它触发了服务器的另一次往返。

有人可以给我提示吗?还是对此有另一个不错的解决方案?

顺便说一句,我正在使用Wicket 1.4。

最佳答案

为什么不能在AjaxFormChoiceComponentUpdatingBehavior中添加CheckGroup

AjaxFormComponentUpdatingBehavior的JavaDoc:


注意:此行为不适用于“选择”或“组”,为此请使用AjaxFormChoiceComponentUpdatingBehavior。


AjaxFormChoiceComponentUpdatingBehavior是与CheckGroupRadioGroup一起使用的行为。如果将AjaxFormComponentUpdatingBehavioronchange事件一起使用,则会在IE中遇到this bug
AjaxFormChoiceComponentUpdatingBehavior可以正确处理此问题,对onclick中的每个Check进行adding CheckGroup event handlers处理。

附带一提,Igor在邮件中说的是,可以用CheckBox代替AjaxCheckBox代替Check。如the sources所示,AjaxCheckBox只是带有CheckBoxAjaxFormComponentUpdatingBehavior("onclick")的便利子类。

09-10 23:18