But.... it throws "Internal Error" (not in feedback) when conversion
error rises on this line:
mNestedModel.setObject(object);
So it will be nice to correct it somehow......
Example of error on BigDecimal:
ERROR - RequestCycle - Cannot parse '2.5' using format
java.text.decimalfor...@674dc
org.apache.wicket.util.convert.ConversionException: Cannot parse '2.5'
using format java.text.decimalfor...@674dc
at
org.apache.wicket.util.convert.converters.AbstractConverter.newConversionException(AbstractConverter.java:78)
at
org.apache.wicket.util.convert.converters.AbstractConverter.parse(AbstractConverter.java:58)
at
org.apache.wicket.util.convert.converters.AbstractNumberConverter.parse(AbstractNumberConverter.java:80)
at
org.apache.wicket.util.convert.converters.BigDecimalConverter.convertToObject(BigDecimalConverter.java:43)
at
org.apache.wicket.util.convert.converters.BigDecimalConverter.convertToObject(BigDecimalConverter.java:28)
at
org.apache.wicket.util.lang.PropertyResolverConverter.convert(PropertyResolverConverter.java:68)
at
org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.setValue(PropertyResolver.java:1082)
at
org.apache.wicket.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(PropertyResolver.java:582)
at
org.apache.wicket.util.lang.PropertyResolver.setValue(PropertyResolver.java:136)
at
org.apache.wicket.model.AbstractPropertyModel.setObject(AbstractPropertyModel.java:169)
at
common.component.DefaultWhenNullModel.setObject(DefaultWhenNullModel.java:41)
On Wed, Jan 28, 2009 at 11:51 AM, Anton Veretennikov
<[email protected]> wrote:
> 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]