This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • DropDownChoice
Skip to end of metadata
Go to start of metadata
Table of contents

This page describes the use of the DropDownChoice component. It is not meant to replace the available javadoc. Common usage questions (FAQ) of the component will be addressed here, along with background/design information, and examples where applicable.

  • Create a .properties file for your subclass of form/panel and define the null key for the value you want. For example:
    <p>
    mypanel.properties
    formid.dropdownid.null=Choose One
    
    or
    mypanel.properties
    null=Choose One
    

Option 1: just make sure the underlying is set!

Option 2: use a model wrapper in a subclass of the dropdownchoice you want to use.

Here is an example usage code:

public class DefaultingCountryDropDown extends CountryDropDown {

    public DefaultingCountryDropDown(String id, IModel model) {
        super(id, new DefaultingModelWrapper(model, new Model("NL")));
    }

    public DefaultingCountryDropDown(String id) {
        super(id, new DefaultingModelWrapper(getModel(), new Model("NL")));
    }
}

And here is the wrapper:

import org.apache.wicket.model.IChainingModel;
import org.apache.wicket.model.AbstractWrapModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.IWrapModel;

/**
  *
  * @author Erik van Oosten
  */
public class DefaultingModelWrapper implements IWrapModel {

    private IModel wrappedModel;
    private IModel defaultModel;

    public DefaultingModelWrapper(IModel wrappedModel, IModel
defaultModel) {
        this.wrappedModel = wrappedModel;
        this.defaultModel = defaultModel;
    }

    public IModel getWrappedModel() {
        return wrappedModel;
    }

    public Object getObject() {
        Object value = wrappedModel.getObject();
        if (value == null) {
            value = defaultModel.getObject();
        }
        return value;
    }

    public void setObject(Object object) {
        wrappedModel.setObject(object);
    }

    public void detach() {
        wrappedModel.detach();
        defaultModel.detach();
    }
}

See DropDownChoice Examples for a start...