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.