Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Panel
borderStylesolid
titleTable of contents
Table of Contents
minLevel2

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>
    Code Block
    mypanel.properties
    formid.dropdownid.null=Choose One
    
    or
    Code Block
    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:

Code Block
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:

Code Block
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...