[ 
https://issues.apache.org/jira/browse/WICKET-606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12501802
 ] 

Timo Rantalaiho commented on WICKET-606:
----------------------------------------

After I updated to a fresh 1.3.0 snapshot today (and these changes got 
applied), one of our tests started failing because a TextField got its input 
trimmed even though we didn't want it to happen.

What does the trimming is FormComponent.convertValue():

        protected Object convertValue(String[] value) throws ConversionException
        {
                return value != null && value.length > 0 && value[0] != null ? 
value[0].trim() : null;
        }

So I think that a side effect of these changes has been that now 
FormComponent.convertValue() gets always called to String-type text components 
(at least when using a PropertyModel). 

I find it suspicious that the framework would always trim input by default; at 
least it could be overridable (though you can already override the whole 
convertValue()). What puzzles me a bit more is how this side effect was caused 
by these changes.

What do you think?

> AbstractTextComponent#setConvertEmptyInputStringToNull(true) does not work 
> with IObjectClassAwareModels (affects TextField, etc.)
> ---------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-606
>                 URL: https://issues.apache.org/jira/browse/WICKET-606
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: trunk
>            Reporter: Alastair Maw
>            Assignee: Alastair Maw
>            Priority: Blocker
>             Fix For: 1.3.0-beta2
>
>
> The unit tests ought to cover this, but apparently don't. A TextField should 
> convert empty strings to nulls if you call 
> setConvertEmptyInputStringToNull(true) on it (which the constructors do by 
> default).
> However, this doesn't currently work:
>  - AbstractTextComponent#getConvertEmptyInputStringToNull() is only called 
> from AbstractTextComponent#convertValue(String[]).
>  - AbstractTextComponent#convertValue(String[]) is called from 
> FormComponent#convert(), but only if the component doesn't have a type 
> assigned to it.
>  - As soon as you use a PropertyModel (which implements 
> IObjectClassAwareModel), this means empty strings are no longer converted to 
> nulls.
> This is obviously a great big blocker and needs fixing ASAP.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to