Funny, I answered the same question to my colleague this morning.

Below the code I gave him.
What happens is that the model is wrapped in another model. The wrapping
model has a defaultModel that is used to return a value when the
underlying model returns null.

Below the model wrapper you find an example on how to use it.

If you find something better, please let us know :)

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();
    }
}


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")));
    }
}



Regards,
    Erik.


Juan Gabriel Arias wrote:
> DropDownChoice has a lot of contructors. One of them,
>
> DropDownChoice(String id, IModel model, IModel choices, ...)
>
> The first model, could be named "selectedModel". And represents the selected
> object, with a wicket model.
>
>   

--
Erik van Oosten
http://day-to-day-stuff.blogspot.com/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to