Hi, I made a select-all check box inside a table. I used the example from http://javathoughts.capesugarbird.com/2007/09/ajax-select-all-checkbox-for-wicket.html It works well in most cases.
Here's some code: Adding the checkgroup to the panel: private void addCheckGroup() { checkGroup = new MyAjaxCheckBox("allChecked", new PropertyModel(this, "allChecked")) { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { final boolean isSelected = isChecked(); if (isSelected) { checkGroupModel.addAll(entitiesList); } else { checkGroupModel.clear(); } for (MyAjaxCheckBox check : checkboxes) { check.setOutputMarkupId(true); target.addComponent(check); } for (EntityWrapper entity : entitiesList) { entity.setSelect(isSelected); } // target.addComponent(EntitiesPanel.this); EntitiesPanel.this.onUpdate(target); } @Override public boolean isVisible() { return (withSelect && entitiesList != null && entitiesList.size() > 0); } }; checkGroup.setOutputMarkupId(true); // checkGroup.setVisible(false); add(checkGroup); } The Checkbox column inside the table, and the fragment it uses: private AbstractColumn createCheckboxColumn() { AbstractColumn p = new AbstractColumn(new Model()) { private static final long serialVersionUID = 1L; public void populateItem(Item cellItem, String componentId, IModel rowModel) { EntityWrapper confEntity = (EntityWrapper) rowModel.getObject(); Fragment frag = new CheckboxEntityFrag(componentId, "checkboxFrag", EntitiesPanel.this, confEntity); cellItem.add(frag); } }; return p; } private CheckboxEntityFrag(String id, String markupId, MarkupContainer markupProvider, final EntityWrapper value) { super(id, markupId, markupProvider); checkbox = new MyAjaxCheckBox("entityCheckbox", new PropertyModel(value, "select")) { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { if (isChecked()) { if (!checkGroupModel.contains(value)) checkGroupModel.add(value); } else { checkGroupModel.remove(value); } setAllChecked(checkGroupModel.size() == entitiesList.size()); checkGroup.setOutputMarkupId(true); target.addComponent(checkGroup); EntitiesPanel.this.onUpdate(target); } }; add(checkbox); checkboxes.add(checkbox); } } The problem: someone else uses my panel for his purposes. He has a page (search page) that has my panel (with the table and the checkboxes). His page has a navigation button - NEXT that uses setResponsePage. The next page has a PREV button to go back. Going back is also with setResponsePage WITH THE ORIGINAL one. The scenario: Open the search page (with my panel) - the 'select-all' work fine. Press next. Press back. Press the 'select-all' again. I get an exception: java.lang.IllegalStateException: No Page found for component [MarkupContainer [Component id = entityCheckbox, page = <No Page>, path = 1:cells:1:cell:entityCheckbox.EntitiesPanel$CheckboxEntityFrag$1]] Is there something in a page's component's life cycle that I'm missing? Hope it's clear. (I'll be away for a few days so bare with me if I'm not answering) Thanks -- Eyal Golan [EMAIL PROTECTED] Visit: http://jvdrums.sourceforge.net/