我有一个带有checkgroup的简单面板(面板本身是更大窗体的一部分)。复选组中的复选框在列表视图组件中生成。我需要动态更改这个面板,每次更改后我都需要检索选定的项目。面板的代码基本上如下所示:
CheckGroup<MyObject> group = new CheckGroup<MyObject>(ID, selectedObjects);
ListView<MyObject> objectList = new ListView<MyObject>(ID, values) {
@Override
protected void populateItem(ListItem<MyObject> item) {
Check<MyObject> check = new Check<MyObject>(TIME_CHECK, item.getModel());
Label l = new Label(TIME_LABEL, item.getModel());
item.add(check);
item.add(l);
}
}
group.add(objectList);
group.add(new AjaxFormChoiceComponentUpdatingBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println("Selected objects: "+selectedObjects.size());
}
});
add(group);
现在,问题是,每当我单击复选框时,两个相同的对象都会添加到 selectedObjects
列表。如果我移除 AjaxFormChoiceComponentUpdatingBehavior
,没有对象被添加到列表中(这是有意义的,因为此时我没有提交表单)。
我不太清楚如何解决这个问题,我想出的最好的解决办法是得到名单,然后仔细检查,消除口是心非。
另外,很抱歉标题,但我不知道如何命名这个问题。
下面有一个小例子来说明问题:假设check组正在显示这些对象:
object 1
object 2
object 3
object 4
object 5
当我选择 object 1
check group(=selectedobjects)的模型如下所示:
object 1
object 1
3条答案
按热度按时间arknldoa1#
尝试
或者
或者类似的东西,取决于你的代码。
6ju8rftf2#
这是小门上的虫子。我使用了7.1版,然后在7.10版上进行了更改,问题就解决了!
py49o6xq3#
您可以尝试以下构造,重新创建checkgroup,使其处于最新状态。也许有点过分了,但应该可以。