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]