Place your table inside a CheckGroup and add the validator there.

Below is my implementation of this validator:

import org.apache.wicket.validation.IValidatable;
import org.apache.wicket.validation.IValidator;
import org.apache.wicket.validation.ValidationError;
public class AtLeastOneSelectedValidator<T> implements
IValidator<Collection<T>> {
    private static final long serialVersionUID = 1L;

    private String resourceKey;

 public AtLeastOneSelectedValidator(String resourceKey) {
  setResourceKey(resourceKey);
 }

 @Override
    public void validate(IValidatable<Collection<T>> validatable) {
        int numSelected = validatable.getValue().size();
        if(numSelected < 1) {
            validatable.error(new
ValidationError().addKey(getResourceKey()));
        }
    }

    public void setResourceKey(String resourceKey) {
        this.resourceKey = resourceKey;
    }

    public String getResourceKey() {
        return resourceKey;
    }
}


On Wed, May 15, 2013 at 11:28 AM, Saravanan <saravanan...@tcs.com> wrote:

> I have Listview with multiple checkboxes. I need to do validation that
> atleast one checkbox is selected.
>
> For this I have used Custom validator to validate checkboxes and throw
> error. This validator has list having checkboxes
>
> In Listview populateItem method I am adding the checkboxes to this
> validator
> list. But issue is how to add validator to form.
> I used checkbox.getform().add(validator); But it is adding for every
> checkbox in listview. So on running application validate method of
> validator
> is called for each checkbox.
> How to resolve ths. Kindly provide input
>
> #########################################
> new ListView<T>("repeater", listModel) {
>
>
>             @Override
>             protected void populateItem(final ListItem<T> item) {
>                 final T current = item.getModelObject();
>
>                 final IModel<Boolean> cbModel = new
> ListChoiceCheckBoxModel<T>(current, binding) {
>                     @Override
>                     protected boolean isChoiceEnabled(final T choice) {
>                         return
> EnumCheckBoxRepeaterPanel.this.isChoiceEnabled(choice);
>                     }
>                 };
>                 CheckBox chkbox = new AjaxCheckBox("checkbox", cbModel) {
>                     @Override
>                     protected void onConfigure() {
>                         setEnabled(isChoiceEnabled(current));
>                     }
>                 };
>
>                 item.add(chkbox);
>                 validator.addComponents(chkbox);
>            chkbox.getForm().add(new CheckboxesSelectValidator(chkBoxList,
> "Invalid"));
>                 item.add(new Label("label", localizedModel(labels,
> current)));
>             }
>         }.setReuseItems(true);
>
> #########################################
> public class CheckboxesSelectValidator extends AbstractFormValidator {
>
>     private static final long serialVersionUID = -5475763159946590330L;
>     /** form components to be checked. */
>     // private final CheckBox[] components;
>     private final String optionsMessage;
>     private final List<CheckBox> components;
>
>     public CheckboxesSelectValidator(final List<CheckBox> components, final
> String optionsMessage) {
>         this.components = components;
>         this.optionsMessage = optionsMessage;
>     }
>
>     public void addComponents(final CheckBox checkbox) {
>         components.add(checkbox);
>     }
>
>     @Override
>     public FormComponent[] getDependentFormComponents() {
>         return components.toArray(new FormComponent[components.size()]);
>     }
>
>     @Override
>     public void validate(final Form<?> form) {
>         for (CheckBox component : components) {
>             component.isEnabled();
>             component.getValue();
>         }
>
>     }
>
> }
>
>
>
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/Adding-Custom-validator-for-Listview-having-multiple-checkboxes-tp4658825.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to