[ 
https://issues.apache.org/jira/browse/WICKET-3269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12975882#action_12975882
 ] 

Sven Meier commented on WICKET-3269:
------------------------------------

> it makes sense that empty strings are converted to nulls, this is what 99% of 
> users expect.
I have to disagree on this generalized statement.

>what if the TextField holds an Integer? we cant push an empty string into the 
>model then, but we can a >null. nulls are more universal then empty strings.

This is a straw man argument: This feature request has no intention to change 
anything about handling type conversion and/or null conversion of non-String 
types. It's about removing the special handling of the String type.

>providing an application-wide setting also will not work as it will break 
>component libs that expect empty >strings to be converted to nulls.

Do you have an example case where this would be problematic?

>it is not a job of a converter to perform value->null conversions. converters 
>are there for type conversion, not string manipulation.

Actually they do so already, see AbstractIntegerConverter subclasses as 
examples.

>this can be toggled application-wide by using IComponentOnBeforeRenderListener 
>to toggle the setting to false

This wouldn't allow to explicitly change the setting for a single component.

IMHO this is the wrong decision. Could we get opinions from other devs on this 
issue?

Thanks

> Review AbstractTextComponent's handling of empty Strings in 1.5
> ---------------------------------------------------------------
>
>                 Key: WICKET-3269
>                 URL: https://issues.apache.org/jira/browse/WICKET-3269
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket
>    Affects Versions: 1.5-M3
>            Reporter: Sven Meier
>            Assignee: Igor Vaynberg
>         Attachments: AbstractTextComponent_A.diff, 
> AbstractTextComponent_B.diff, WICKET-3269-test.patch, WICKET-3269.patch
>
>
> Context:
> With convertEmptyInputStringToNull set to 'true' (the default), 
> AbstractTextComponent converts empty strings to 'null'.
> This works only if the component doesn't know its model type.
> Problem:
> In our application we would like to always keep empty Strings as they are. We 
> tried to use a ComponentInstantiationListener to set 
> convertEmptyInputStringToNull to 'false', but regretfully 
> AbstractTextComponent reverts this setting to 'true' in its constructor.
> Proposals for 1.5 (either A or B):
> A) Change default of convertEmptyInputStringToNull to 'false'.
> - allows applications to keep empty strings as they are,
> - if needed, clients can use a ComponentInstantiationListener to globally set 
> convertEmptyInputStringToNull to 'true' for the old default
> B) Remove support for special handling of empty strings.
> - no special handling in #convertValue(String[]) and #resolveType() needed,
> - no more ambiguity whether ConvertEmptyInputStringToNull has any effect 
> (model type known or not),
> - if needed, clients can use a custom Converter to convert empty strings to 
> 'null'.
> See attached patches, note that no unit tests changes were required.
> Thanks for your consideration.

-- 
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