Not very nice but works (Jeremy Thomerson's variant with setObject changes):

public class DefaultWhenNullModel<T> implements IModel<T> {

  private static final long serialVersionUID = 1L;
  private final IModel<T> mNestedModel;
  private final T mDefaultValue;

  public DefaultWhenNullModel(IModel<T> nestedModel, T defaultValue) {
    mNestedModel = nestedModel;
    mDefaultValue = defaultValue;
  }

  public T getObject() {
    T val = mNestedModel.getObject();
    return val == null ? mDefaultValue : val;
  }

  public void setObject(T object) {
    if (object!=null && object.equals(mDefaultValue)) {
      mNestedModel.setObject(null);
    } else {
      mNestedModel.setObject(object);
    }
  }

  public void detach() {
    mNestedModel.detach();
  }
}


Usage:
    form.add(new TextField("value",
            new DefaultWhenNullModel(new
PropertyModel(getSomeModel(),"value"), "<Enter a value>")

            ));




On Wed, Jan 28, 2009 at 5:16 AM, nate roe <[email protected]> wrote:
> Actually, I don't think that this will work for me.
>
> The behavior that I want is to display a special string when the model is
> null.  However, I still want the model to be null.
>
> My custom converter converts a special keyword to a null model.  I want also
> to convert a new model to a special keyword for display.
>
> On Tue, Jan 27, 2009 at 11:46 AM, nate roe <[email protected]> wrote:
>
>> Excellent, thanks for writing that one up!
>>
>>
>> On Tue, Jan 27, 2009 at 11:41 AM, Jeremy Thomerson <
>> [email protected]> wrote:
>>
>>> This has come up quite a bit here on the user list.
>>>
>>> See the first example on this page:
>>>
>>> http://www.jeremythomerson.com/blog/2008/11/06/wicket-the-power-of-nested-models/
>>>
>>>
>>> --
>>> Jeremy Thomerson
>>> http://www.wickettraining.com
>>>
>>> On Tue, Jan 27, 2009 at 1:38 PM, nate roe <[email protected]> wrote:
>>>
>>> > I'm using Wicket v1.3.4.
>>> >
>>> > I would like to create a kind of TextField that converts a null model
>>> value
>>> > to a custom string rather than an empty string.  Unfortunately, the
>>> > converter is not run when the model object is null, and it looks like
>>> > Component.getModelObjectAsString(...) is hard-coded to return "" when
>>> the
>>> > model is null.
>>> >
>>> > Is there some way I can overcome this without modifying the Wicket
>>> source?
>>> >
>>> > Thanks,
>>> > Nate Roe
>>> >
>>>
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to